Not in the top 1,000 by GitHub stars
CrestApps/CrestApps.AgentSkills
Shared AI agent skills and MCP tooling for .NET applications and Orchard Core based projects. The repository contains three projects that solve distinct problems:
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
plugins/crestapps-core/skills/crestapps-core-a2a/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-ai-agents/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-ai-markdown/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-ai-memory/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-ai-model-capabilities/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-ai-personas/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-ai-profiles/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-ai-runtime/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-ai-templates/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-ai-usage-metering/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-aspnet-hosting/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-azure-ai-inference/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-azure-ai-search/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-azure-openai/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-chat/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-chat-interactions/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-claude-orchestrator/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-context-builders/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-copilot-orchestrator/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-custom-tools/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-data-sources/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-data-storage/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-document-agents/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-document-processing/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-elasticsearch/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-entitycore-stores/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-extensible-entities/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-external-relays/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-file-sources/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-foundations/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-mcp/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-mcp-file-resources/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-ollama/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-openai/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-orchestration/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-overview/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-postgresql/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-prompt-security/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-realtime-voice/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-resilience/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-response-handlers/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-sample-hosts/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-signalr/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-templates/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-tool-instances/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-web-crawlers/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-core/skills/crestapps-core-yessql-stores/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-addresses/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-a2a-client/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-a2a-host/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-agent/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-chat/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-chat-analytics/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-chat-claude/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-chat-copilot/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-chat-interactions/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-chat-notifications/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-connections/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-data-sources/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-documents/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-documents-azure-storage/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-documents-azureai/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-documents-elasticsearch/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-documents-extractors/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-file-sources/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-mcp/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-mcp-client/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-mcp-resources/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-mcp-server/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-memory/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-memory-azureai/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-memory-elasticsearch/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-model-capabilities/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-personas/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-profile-builder/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-profile-templates/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-prompting/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-providers/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-realtime-voice/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-response-handlers/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-tool-instances/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-tools/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-usage-analytics/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-web-crawlers/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-ai-workflows/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-bookings/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-carts/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-checkout/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-classifieds/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-commerce/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-companies/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-contact-center/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-content-access-control/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-content-transfer/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-crestapps-content-fields/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-crestapps-recipes/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-crestapps-resources/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-crestapps-roles/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-crestapps-users/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-custom-indexing-azureai/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-custom-indexing-elasticsearch/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-customers/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-dnc-registry/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-downloads/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-fundraising/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-inventory/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-marketing/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-marketplace/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-markets/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-memberships/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-omnichannel/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-omnichannel-event-grid/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-omnichannel-management/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-omnichannel-messaging/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-omnichannel-sms/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-omnichannel-voice/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-orders/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-pay-later/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-payments/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-phone-number-verifications/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-phone-numbers/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-point-of-sale/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-products/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-receipts/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-report-builder/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-reports/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-reviews/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-shipping/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-signalr/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-subscriptions/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-taxation/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-telephony/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-telephony-asterisk/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-telephony-telnyx/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-tenant-hierarchy/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-time-zones/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-transactions/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-websockets/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/crestapps-orchardcore/skills/orchardcore-wizard/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-admin/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-admin-dashboard/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-admin-edit-views/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-admin-lists/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-admin-menu/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-alias/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-amazon-s3-media/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-antivirus/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-archive-later/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-asset-manager/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-audit-trail/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-auto-setup/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-autoroute/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-azure-ai-search/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-azure-data-protection/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-azure-key-vault/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-azure-media/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-background-tasks/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-blazor/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-breadcrumbs/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-caching/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-configuration/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-content-definition-handlers/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-content-fields/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-content-items/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-content-localization/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-content-parts/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-content-preview/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-content-queries/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-content-relationships/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-content-types/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-contents-admin-list-filters/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-contents-api/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-cors/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-custom-settings/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-custom-user-settings/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-data/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-data-formulas/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-data-localization/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-data-migrations/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-data-pipeline-steps/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-data-pipelines/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-data-sources/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-decoupled-cms/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-deferred-tasks/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-deployment-remote/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-deployments/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-diagnostics/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-display-management/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-docker/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-dynamic-cache/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-elasticsearch/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-email/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-email-azure/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-email-smtp/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-facebook/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-features/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-feeds/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-file-upload-security/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-flow-bagpart/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-forms/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-github-authentication/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-google/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-graphql/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-health-checks/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-html/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-https/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-indexing/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-indexing-sources/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-layers/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-liquid/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-lists/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-localization/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-localization-source/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-logging-serilog/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-lucene/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-markdown/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-media/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-media-gallery/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-media-slugify/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-menus/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-microsoft-auth/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-mini-profiler/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-module-creator/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-modules/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-navigation/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-notifications/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-openapi/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-openid/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-permission-providers/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-placement/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-publish-later/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-rate-limits/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-razor/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-recaptcha/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-recipes/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-redis/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-resources/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-reverse-proxy/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-rules/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-sanitizer/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-scripting/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-search-indexing/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-search-providers/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-security/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-seo/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-setup/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-shape-discovery/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-shapes/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-shells/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-shortcodes/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-site-settings/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-sitemaps/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-sms/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-sms-azure/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-source-generators/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-spatial/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-sql-indexing/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-startup-code/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-taxonomies/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-temp-file-storage/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-templates/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-tenants/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-tester/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-theme-creator/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-theming/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-twitter/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-unit-test/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-url-rewriting/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-users-admin-list-filters/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-users-roles/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-widgets/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-workflows/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-xml-rpc/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
plugins/orchardcore/skills/orchardcore-yessql-indexes/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-a2a/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-ai-agents/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-ai-markdown/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-ai-memory/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-ai-model-capabilities/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-ai-personas/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-ai-profiles/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-ai-runtime/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-ai-templates/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-ai-usage-metering/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-aspnet-hosting/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-azure-ai-inference/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-azure-ai-search/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-azure-openai/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-chat/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-chat-interactions/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-claude-orchestrator/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-context-builders/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-copilot-orchestrator/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-custom-tools/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-data-sources/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-data-storage/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-document-agents/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-document-processing/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-elasticsearch/SKILL.md
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → d86d04f234b1
No earlier version was observed for comparison.
Verified commit d86d04f234b1b2bd8145368a2544490f9d557596
git clone --filter=blob:none --no-checkout https://github.com/CrestApps/CrestApps.AgentSkills.git .hotskills/crestapps-crestapps.agentskills && git -C .hotskills/crestapps-crestapps.agentskills checkout --detach d86d04f234b1b2bd8145368a2544490f9d557596
# Copy each selected skill directory from .hotskills/crestapps-crestapps.agentskills into .claude/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/CrestApps/CrestApps.AgentSkills.git .hotskills/crestapps-crestapps.agentskills && git -C .hotskills/crestapps-crestapps.agentskills checkout --detach d86d04f234b1b2bd8145368a2544490f9d557596
# Copy each selected skill directory from .hotskills/crestapps-crestapps.agentskills into .agents/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/CrestApps/CrestApps.AgentSkills.git .hotskills/crestapps-crestapps.agentskills && git -C .hotskills/crestapps-crestapps.agentskills checkout --detach d86d04f234b1b2bd8145368a2544490f9d557596
# Copy each selected skill directory from .hotskills/crestapps-crestapps.agentskills into .github/skills/<skill-name>/Heat
1.4- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
- crestapps-core-a2a
plugins/crestapps-core/skills/crestapps-core-a2a - crestapps-core-ai-agents
plugins/crestapps-core/skills/crestapps-core-ai-agents - crestapps-core-ai-markdown
plugins/crestapps-core/skills/crestapps-core-ai-markdown - crestapps-core-ai-memory
plugins/crestapps-core/skills/crestapps-core-ai-memory - crestapps-core-ai-model-capabilities
plugins/crestapps-core/skills/crestapps-core-ai-model-capabilities - crestapps-core-ai-personas
plugins/crestapps-core/skills/crestapps-core-ai-personas - crestapps-core-ai-profiles
plugins/crestapps-core/skills/crestapps-core-ai-profiles - crestapps-core-ai-runtime
plugins/crestapps-core/skills/crestapps-core-ai-runtime - crestapps-core-ai-templates
plugins/crestapps-core/skills/crestapps-core-ai-templates - crestapps-core-ai-usage-metering
plugins/crestapps-core/skills/crestapps-core-ai-usage-metering - crestapps-core-aspnet-hosting
plugins/crestapps-core/skills/crestapps-core-aspnet-hosting - crestapps-core-azure-ai-inference
plugins/crestapps-core/skills/crestapps-core-azure-ai-inference - crestapps-core-azure-ai-search
plugins/crestapps-core/skills/crestapps-core-azure-ai-search - crestapps-core-azure-openai
plugins/crestapps-core/skills/crestapps-core-azure-openai - crestapps-core-chat
plugins/crestapps-core/skills/crestapps-core-chat - crestapps-core-chat-interactions
plugins/crestapps-core/skills/crestapps-core-chat-interactions - crestapps-core-claude-orchestrator
plugins/crestapps-core/skills/crestapps-core-claude-orchestrator - crestapps-core-context-builders
plugins/crestapps-core/skills/crestapps-core-context-builders - crestapps-core-copilot-orchestrator
plugins/crestapps-core/skills/crestapps-core-copilot-orchestrator - crestapps-core-custom-tools
plugins/crestapps-core/skills/crestapps-core-custom-tools - crestapps-core-data-sources
plugins/crestapps-core/skills/crestapps-core-data-sources - crestapps-core-data-storage
plugins/crestapps-core/skills/crestapps-core-data-storage - crestapps-core-document-agents
plugins/crestapps-core/skills/crestapps-core-document-agents - crestapps-core-document-processing
plugins/crestapps-core/skills/crestapps-core-document-processing - crestapps-core-elasticsearch
plugins/crestapps-core/skills/crestapps-core-elasticsearch - crestapps-core-entitycore-stores
plugins/crestapps-core/skills/crestapps-core-entitycore-stores - crestapps-core-extensible-entities
plugins/crestapps-core/skills/crestapps-core-extensible-entities - crestapps-core-external-relays
plugins/crestapps-core/skills/crestapps-core-external-relays - crestapps-core-file-sources
plugins/crestapps-core/skills/crestapps-core-file-sources - crestapps-core-foundations
plugins/crestapps-core/skills/crestapps-core-foundations - crestapps-core-mcp
plugins/crestapps-core/skills/crestapps-core-mcp - crestapps-core-mcp-file-resources
plugins/crestapps-core/skills/crestapps-core-mcp-file-resources - crestapps-core-ollama
plugins/crestapps-core/skills/crestapps-core-ollama - crestapps-core-openai
plugins/crestapps-core/skills/crestapps-core-openai - crestapps-core-orchestration
plugins/crestapps-core/skills/crestapps-core-orchestration - crestapps-core-overview
plugins/crestapps-core/skills/crestapps-core-overview - crestapps-core-postgresql
plugins/crestapps-core/skills/crestapps-core-postgresql - crestapps-core-prompt-security
plugins/crestapps-core/skills/crestapps-core-prompt-security - crestapps-core-realtime-voice
plugins/crestapps-core/skills/crestapps-core-realtime-voice - crestapps-core-resilience
plugins/crestapps-core/skills/crestapps-core-resilience - crestapps-core-response-handlers
plugins/crestapps-core/skills/crestapps-core-response-handlers - crestapps-core-sample-hosts
plugins/crestapps-core/skills/crestapps-core-sample-hosts - crestapps-core-signalr
plugins/crestapps-core/skills/crestapps-core-signalr - crestapps-core-templates
plugins/crestapps-core/skills/crestapps-core-templates - crestapps-core-tool-instances
plugins/crestapps-core/skills/crestapps-core-tool-instances - crestapps-core-web-crawlers
plugins/crestapps-core/skills/crestapps-core-web-crawlers - crestapps-core-yessql-stores
plugins/crestapps-core/skills/crestapps-core-yessql-stores - orchardcore-addresses
plugins/crestapps-orchardcore/skills/orchardcore-addresses - orchardcore-ai
plugins/crestapps-orchardcore/skills/orchardcore-ai - orchardcore-ai-a2a-client
plugins/crestapps-orchardcore/skills/orchardcore-ai-a2a-client - orchardcore-ai-a2a-host
plugins/crestapps-orchardcore/skills/orchardcore-ai-a2a-host - orchardcore-ai-agent
plugins/crestapps-orchardcore/skills/orchardcore-ai-agent - orchardcore-ai-chat
plugins/crestapps-orchardcore/skills/orchardcore-ai-chat - orchardcore-ai-chat-analytics
plugins/crestapps-orchardcore/skills/orchardcore-ai-chat-analytics - orchardcore-ai-chat-claude
plugins/crestapps-orchardcore/skills/orchardcore-ai-chat-claude - orchardcore-ai-chat-copilot
plugins/crestapps-orchardcore/skills/orchardcore-ai-chat-copilot - orchardcore-ai-chat-interactions
plugins/crestapps-orchardcore/skills/orchardcore-ai-chat-interactions - orchardcore-ai-chat-notifications
plugins/crestapps-orchardcore/skills/orchardcore-ai-chat-notifications - orchardcore-ai-connections
plugins/crestapps-orchardcore/skills/orchardcore-ai-connections - orchardcore-ai-data-sources
plugins/crestapps-orchardcore/skills/orchardcore-ai-data-sources - orchardcore-ai-documents
plugins/crestapps-orchardcore/skills/orchardcore-ai-documents - orchardcore-ai-documents-azure-storage
plugins/crestapps-orchardcore/skills/orchardcore-ai-documents-azure-storage - orchardcore-ai-documents-azureai
plugins/crestapps-orchardcore/skills/orchardcore-ai-documents-azureai - orchardcore-ai-documents-elasticsearch
plugins/crestapps-orchardcore/skills/orchardcore-ai-documents-elasticsearch - orchardcore-ai-documents-extractors
plugins/crestapps-orchardcore/skills/orchardcore-ai-documents-extractors - orchardcore-ai-file-sources
plugins/crestapps-orchardcore/skills/orchardcore-ai-file-sources - orchardcore-ai-mcp
plugins/crestapps-orchardcore/skills/orchardcore-ai-mcp - orchardcore-ai-mcp-client
plugins/crestapps-orchardcore/skills/orchardcore-ai-mcp-client - orchardcore-ai-mcp-resources
plugins/crestapps-orchardcore/skills/orchardcore-ai-mcp-resources - orchardcore-ai-mcp-server
plugins/crestapps-orchardcore/skills/orchardcore-ai-mcp-server - orchardcore-ai-memory
plugins/crestapps-orchardcore/skills/orchardcore-ai-memory - orchardcore-ai-memory-azureai
plugins/crestapps-orchardcore/skills/orchardcore-ai-memory-azureai - orchardcore-ai-memory-elasticsearch
plugins/crestapps-orchardcore/skills/orchardcore-ai-memory-elasticsearch - orchardcore-ai-model-capabilities
plugins/crestapps-orchardcore/skills/orchardcore-ai-model-capabilities - orchardcore-ai-personas
plugins/crestapps-orchardcore/skills/orchardcore-ai-personas - orchardcore-ai-profile-builder
plugins/crestapps-orchardcore/skills/orchardcore-ai-profile-builder - orchardcore-ai-profile-templates
plugins/crestapps-orchardcore/skills/orchardcore-ai-profile-templates - orchardcore-ai-prompting
plugins/crestapps-orchardcore/skills/orchardcore-ai-prompting - orchardcore-ai-providers
plugins/crestapps-orchardcore/skills/orchardcore-ai-providers - orchardcore-ai-realtime-voice
plugins/crestapps-orchardcore/skills/orchardcore-ai-realtime-voice - orchardcore-ai-response-handlers
plugins/crestapps-orchardcore/skills/orchardcore-ai-response-handlers - orchardcore-ai-tool-instances
plugins/crestapps-orchardcore/skills/orchardcore-ai-tool-instances - orchardcore-ai-tools
plugins/crestapps-orchardcore/skills/orchardcore-ai-tools - orchardcore-ai-usage-analytics
plugins/crestapps-orchardcore/skills/orchardcore-ai-usage-analytics - orchardcore-ai-web-crawlers
plugins/crestapps-orchardcore/skills/orchardcore-ai-web-crawlers - orchardcore-ai-workflows
plugins/crestapps-orchardcore/skills/orchardcore-ai-workflows - orchardcore-bookings
plugins/crestapps-orchardcore/skills/orchardcore-bookings - orchardcore-carts
plugins/crestapps-orchardcore/skills/orchardcore-carts - orchardcore-checkout
plugins/crestapps-orchardcore/skills/orchardcore-checkout - orchardcore-classifieds
plugins/crestapps-orchardcore/skills/orchardcore-classifieds - orchardcore-commerce
plugins/crestapps-orchardcore/skills/orchardcore-commerce - orchardcore-companies
plugins/crestapps-orchardcore/skills/orchardcore-companies - orchardcore-contact-center
plugins/crestapps-orchardcore/skills/orchardcore-contact-center - orchardcore-content-access-control
plugins/crestapps-orchardcore/skills/orchardcore-content-access-control - orchardcore-content-transfer
plugins/crestapps-orchardcore/skills/orchardcore-content-transfer - orchardcore-crestapps-content-fields
plugins/crestapps-orchardcore/skills/orchardcore-crestapps-content-fields - orchardcore-crestapps-recipes
plugins/crestapps-orchardcore/skills/orchardcore-crestapps-recipes - orchardcore-crestapps-resources
plugins/crestapps-orchardcore/skills/orchardcore-crestapps-resources - orchardcore-crestapps-roles
plugins/crestapps-orchardcore/skills/orchardcore-crestapps-roles - orchardcore-crestapps-users
plugins/crestapps-orchardcore/skills/orchardcore-crestapps-users - orchardcore-custom-indexing-azureai
plugins/crestapps-orchardcore/skills/orchardcore-custom-indexing-azureai - orchardcore-custom-indexing-elasticsearch
plugins/crestapps-orchardcore/skills/orchardcore-custom-indexing-elasticsearch - orchardcore-customers
plugins/crestapps-orchardcore/skills/orchardcore-customers - orchardcore-dnc-registry
plugins/crestapps-orchardcore/skills/orchardcore-dnc-registry - orchardcore-downloads
plugins/crestapps-orchardcore/skills/orchardcore-downloads - orchardcore-fundraising
plugins/crestapps-orchardcore/skills/orchardcore-fundraising - orchardcore-inventory
plugins/crestapps-orchardcore/skills/orchardcore-inventory - orchardcore-marketing
plugins/crestapps-orchardcore/skills/orchardcore-marketing - orchardcore-marketplace
plugins/crestapps-orchardcore/skills/orchardcore-marketplace - orchardcore-markets
plugins/crestapps-orchardcore/skills/orchardcore-markets - orchardcore-memberships
plugins/crestapps-orchardcore/skills/orchardcore-memberships - orchardcore-omnichannel
plugins/crestapps-orchardcore/skills/orchardcore-omnichannel - orchardcore-omnichannel-event-grid
plugins/crestapps-orchardcore/skills/orchardcore-omnichannel-event-grid - orchardcore-omnichannel-management
plugins/crestapps-orchardcore/skills/orchardcore-omnichannel-management - orchardcore-omnichannel-messaging
plugins/crestapps-orchardcore/skills/orchardcore-omnichannel-messaging - orchardcore-omnichannel-sms
plugins/crestapps-orchardcore/skills/orchardcore-omnichannel-sms - orchardcore-omnichannel-voice
plugins/crestapps-orchardcore/skills/orchardcore-omnichannel-voice - orchardcore-orders
plugins/crestapps-orchardcore/skills/orchardcore-orders - orchardcore-pay-later
plugins/crestapps-orchardcore/skills/orchardcore-pay-later - orchardcore-payments
plugins/crestapps-orchardcore/skills/orchardcore-payments - orchardcore-phone-number-verifications
plugins/crestapps-orchardcore/skills/orchardcore-phone-number-verifications - orchardcore-phone-numbers
plugins/crestapps-orchardcore/skills/orchardcore-phone-numbers - orchardcore-point-of-sale
plugins/crestapps-orchardcore/skills/orchardcore-point-of-sale - orchardcore-products
plugins/crestapps-orchardcore/skills/orchardcore-products - orchardcore-receipts
plugins/crestapps-orchardcore/skills/orchardcore-receipts - orchardcore-report-builder
plugins/crestapps-orchardcore/skills/orchardcore-report-builder - orchardcore-reports
plugins/crestapps-orchardcore/skills/orchardcore-reports - orchardcore-reviews
plugins/crestapps-orchardcore/skills/orchardcore-reviews - orchardcore-shipping
plugins/crestapps-orchardcore/skills/orchardcore-shipping - orchardcore-signalr
plugins/crestapps-orchardcore/skills/orchardcore-signalr - orchardcore-subscriptions
plugins/crestapps-orchardcore/skills/orchardcore-subscriptions - orchardcore-taxation
plugins/crestapps-orchardcore/skills/orchardcore-taxation - orchardcore-telephony
plugins/crestapps-orchardcore/skills/orchardcore-telephony - orchardcore-telephony-asterisk
plugins/crestapps-orchardcore/skills/orchardcore-telephony-asterisk - orchardcore-telephony-telnyx
plugins/crestapps-orchardcore/skills/orchardcore-telephony-telnyx - orchardcore-tenant-hierarchy
plugins/crestapps-orchardcore/skills/orchardcore-tenant-hierarchy - orchardcore-time-zones
plugins/crestapps-orchardcore/skills/orchardcore-time-zones - orchardcore-transactions
plugins/crestapps-orchardcore/skills/orchardcore-transactions - orchardcore-websockets
plugins/crestapps-orchardcore/skills/orchardcore-websockets - orchardcore-wizard
plugins/crestapps-orchardcore/skills/orchardcore-wizard - orchardcore-admin
plugins/orchardcore/skills/orchardcore-admin - orchardcore-admin-dashboard
plugins/orchardcore/skills/orchardcore-admin-dashboard - orchardcore-admin-edit-views
plugins/orchardcore/skills/orchardcore-admin-edit-views - orchardcore-admin-lists
plugins/orchardcore/skills/orchardcore-admin-lists - orchardcore-admin-menu
plugins/orchardcore/skills/orchardcore-admin-menu - orchardcore-alias
plugins/orchardcore/skills/orchardcore-alias - orchardcore-amazon-s3-media
plugins/orchardcore/skills/orchardcore-amazon-s3-media - orchardcore-antivirus
plugins/orchardcore/skills/orchardcore-antivirus - orchardcore-archive-later
plugins/orchardcore/skills/orchardcore-archive-later - orchardcore-asset-manager
plugins/orchardcore/skills/orchardcore-asset-manager - orchardcore-audit-trail
plugins/orchardcore/skills/orchardcore-audit-trail - orchardcore-auto-setup
plugins/orchardcore/skills/orchardcore-auto-setup - orchardcore-autoroute
plugins/orchardcore/skills/orchardcore-autoroute - orchardcore-azure-ai-search
plugins/orchardcore/skills/orchardcore-azure-ai-search - orchardcore-azure-data-protection
plugins/orchardcore/skills/orchardcore-azure-data-protection - orchardcore-azure-key-vault
plugins/orchardcore/skills/orchardcore-azure-key-vault - orchardcore-azure-media
plugins/orchardcore/skills/orchardcore-azure-media - orchardcore-background-tasks
plugins/orchardcore/skills/orchardcore-background-tasks - orchardcore-blazor
plugins/orchardcore/skills/orchardcore-blazor - orchardcore-breadcrumbs
plugins/orchardcore/skills/orchardcore-breadcrumbs - orchardcore-caching
plugins/orchardcore/skills/orchardcore-caching - orchardcore-configuration
plugins/orchardcore/skills/orchardcore-configuration - orchardcore-content-definition-handlers
plugins/orchardcore/skills/orchardcore-content-definition-handlers - orchardcore-content-fields
plugins/orchardcore/skills/orchardcore-content-fields - orchardcore-content-items
plugins/orchardcore/skills/orchardcore-content-items - orchardcore-content-localization
plugins/orchardcore/skills/orchardcore-content-localization - orchardcore-content-parts
plugins/orchardcore/skills/orchardcore-content-parts - orchardcore-content-preview
plugins/orchardcore/skills/orchardcore-content-preview - orchardcore-content-queries
plugins/orchardcore/skills/orchardcore-content-queries - orchardcore-content-relationships
plugins/orchardcore/skills/orchardcore-content-relationships - orchardcore-content-types
plugins/orchardcore/skills/orchardcore-content-types - orchardcore-contents-admin-list-filters
plugins/orchardcore/skills/orchardcore-contents-admin-list-filters - orchardcore-contents-api
plugins/orchardcore/skills/orchardcore-contents-api - orchardcore-cors
plugins/orchardcore/skills/orchardcore-cors - orchardcore-custom-settings
plugins/orchardcore/skills/orchardcore-custom-settings - orchardcore-custom-user-settings
plugins/orchardcore/skills/orchardcore-custom-user-settings - orchardcore-data
plugins/orchardcore/skills/orchardcore-data - orchardcore-data-formulas
plugins/orchardcore/skills/orchardcore-data-formulas - orchardcore-data-localization
plugins/orchardcore/skills/orchardcore-data-localization - orchardcore-data-migrations
plugins/orchardcore/skills/orchardcore-data-migrations - orchardcore-data-pipeline-steps
plugins/orchardcore/skills/orchardcore-data-pipeline-steps - orchardcore-data-pipelines
plugins/orchardcore/skills/orchardcore-data-pipelines - orchardcore-data-sources
plugins/orchardcore/skills/orchardcore-data-sources - orchardcore-decoupled-cms
plugins/orchardcore/skills/orchardcore-decoupled-cms - orchardcore-deferred-tasks
plugins/orchardcore/skills/orchardcore-deferred-tasks - orchardcore-deployment-remote
plugins/orchardcore/skills/orchardcore-deployment-remote - orchardcore-deployments
plugins/orchardcore/skills/orchardcore-deployments - orchardcore-diagnostics
plugins/orchardcore/skills/orchardcore-diagnostics - orchardcore-display-management
plugins/orchardcore/skills/orchardcore-display-management - orchardcore-docker
plugins/orchardcore/skills/orchardcore-docker - orchardcore-dynamic-cache
plugins/orchardcore/skills/orchardcore-dynamic-cache - orchardcore-elasticsearch
plugins/orchardcore/skills/orchardcore-elasticsearch - orchardcore-email
plugins/orchardcore/skills/orchardcore-email - orchardcore-email-azure
plugins/orchardcore/skills/orchardcore-email-azure - orchardcore-email-smtp
plugins/orchardcore/skills/orchardcore-email-smtp - orchardcore-facebook
plugins/orchardcore/skills/orchardcore-facebook - orchardcore-features
plugins/orchardcore/skills/orchardcore-features - orchardcore-feeds
plugins/orchardcore/skills/orchardcore-feeds - orchardcore-file-upload-security
plugins/orchardcore/skills/orchardcore-file-upload-security - orchardcore-flow-bagpart
plugins/orchardcore/skills/orchardcore-flow-bagpart - orchardcore-forms
plugins/orchardcore/skills/orchardcore-forms - orchardcore-github-authentication
plugins/orchardcore/skills/orchardcore-github-authentication - orchardcore-google
plugins/orchardcore/skills/orchardcore-google - orchardcore-graphql
plugins/orchardcore/skills/orchardcore-graphql - orchardcore-health-checks
plugins/orchardcore/skills/orchardcore-health-checks - orchardcore-html
plugins/orchardcore/skills/orchardcore-html - orchardcore-https
plugins/orchardcore/skills/orchardcore-https - orchardcore-indexing
plugins/orchardcore/skills/orchardcore-indexing - orchardcore-indexing-sources
plugins/orchardcore/skills/orchardcore-indexing-sources - orchardcore-layers
plugins/orchardcore/skills/orchardcore-layers - orchardcore-liquid
plugins/orchardcore/skills/orchardcore-liquid - orchardcore-lists
plugins/orchardcore/skills/orchardcore-lists - orchardcore-localization
plugins/orchardcore/skills/orchardcore-localization - orchardcore-localization-source
plugins/orchardcore/skills/orchardcore-localization-source - orchardcore-logging-serilog
plugins/orchardcore/skills/orchardcore-logging-serilog - orchardcore-lucene
plugins/orchardcore/skills/orchardcore-lucene - orchardcore-markdown
plugins/orchardcore/skills/orchardcore-markdown - orchardcore-media
plugins/orchardcore/skills/orchardcore-media - orchardcore-media-gallery
plugins/orchardcore/skills/orchardcore-media-gallery - orchardcore-media-slugify
plugins/orchardcore/skills/orchardcore-media-slugify - orchardcore-menus
plugins/orchardcore/skills/orchardcore-menus - orchardcore-microsoft-auth
plugins/orchardcore/skills/orchardcore-microsoft-auth - orchardcore-mini-profiler
plugins/orchardcore/skills/orchardcore-mini-profiler - orchardcore-module-creator
plugins/orchardcore/skills/orchardcore-module-creator - orchardcore-modules
plugins/orchardcore/skills/orchardcore-modules - orchardcore-navigation
plugins/orchardcore/skills/orchardcore-navigation - orchardcore-notifications
plugins/orchardcore/skills/orchardcore-notifications - orchardcore-openapi
plugins/orchardcore/skills/orchardcore-openapi - orchardcore-openid
plugins/orchardcore/skills/orchardcore-openid - orchardcore-permission-providers
plugins/orchardcore/skills/orchardcore-permission-providers - orchardcore-placement
plugins/orchardcore/skills/orchardcore-placement - orchardcore-publish-later
plugins/orchardcore/skills/orchardcore-publish-later - orchardcore-rate-limits
plugins/orchardcore/skills/orchardcore-rate-limits - orchardcore-razor
plugins/orchardcore/skills/orchardcore-razor - orchardcore-recaptcha
plugins/orchardcore/skills/orchardcore-recaptcha - orchardcore-recipes
plugins/orchardcore/skills/orchardcore-recipes - orchardcore-redis
plugins/orchardcore/skills/orchardcore-redis - orchardcore-resources
plugins/orchardcore/skills/orchardcore-resources - orchardcore-reverse-proxy
plugins/orchardcore/skills/orchardcore-reverse-proxy - orchardcore-rules
plugins/orchardcore/skills/orchardcore-rules - orchardcore-sanitizer
plugins/orchardcore/skills/orchardcore-sanitizer - orchardcore-scripting
plugins/orchardcore/skills/orchardcore-scripting - orchardcore-search-indexing
plugins/orchardcore/skills/orchardcore-search-indexing - orchardcore-search-providers
plugins/orchardcore/skills/orchardcore-search-providers - orchardcore-security
plugins/orchardcore/skills/orchardcore-security - orchardcore-seo
plugins/orchardcore/skills/orchardcore-seo - orchardcore-setup
plugins/orchardcore/skills/orchardcore-setup - orchardcore-shape-discovery
plugins/orchardcore/skills/orchardcore-shape-discovery - orchardcore-shapes
plugins/orchardcore/skills/orchardcore-shapes - orchardcore-shells
plugins/orchardcore/skills/orchardcore-shells - orchardcore-shortcodes
plugins/orchardcore/skills/orchardcore-shortcodes - orchardcore-site-settings
plugins/orchardcore/skills/orchardcore-site-settings - orchardcore-sitemaps
plugins/orchardcore/skills/orchardcore-sitemaps - orchardcore-sms
plugins/orchardcore/skills/orchardcore-sms - orchardcore-sms-azure
plugins/orchardcore/skills/orchardcore-sms-azure - orchardcore-source-generators
plugins/orchardcore/skills/orchardcore-source-generators - orchardcore-spatial
plugins/orchardcore/skills/orchardcore-spatial - orchardcore-sql-indexing
plugins/orchardcore/skills/orchardcore-sql-indexing - orchardcore-startup-code
plugins/orchardcore/skills/orchardcore-startup-code - orchardcore-taxonomies
plugins/orchardcore/skills/orchardcore-taxonomies - orchardcore-temp-file-storage
plugins/orchardcore/skills/orchardcore-temp-file-storage - orchardcore-templates
plugins/orchardcore/skills/orchardcore-templates - orchardcore-tenants
plugins/orchardcore/skills/orchardcore-tenants - orchardcore-tester
plugins/orchardcore/skills/orchardcore-tester - orchardcore-theme-creator
plugins/orchardcore/skills/orchardcore-theme-creator - orchardcore-theming
plugins/orchardcore/skills/orchardcore-theming - orchardcore-twitter
plugins/orchardcore/skills/orchardcore-twitter - orchardcore-unit-test
plugins/orchardcore/skills/orchardcore-unit-test - orchardcore-url-rewriting
plugins/orchardcore/skills/orchardcore-url-rewriting - orchardcore-users-admin-list-filters
plugins/orchardcore/skills/orchardcore-users-admin-list-filters - orchardcore-users-roles
plugins/orchardcore/skills/orchardcore-users-roles - orchardcore-widgets
plugins/orchardcore/skills/orchardcore-widgets - orchardcore-workflows
plugins/orchardcore/skills/orchardcore-workflows - orchardcore-xml-rpc
plugins/orchardcore/skills/orchardcore-xml-rpc - orchardcore-yessql-indexes
plugins/orchardcore/skills/orchardcore-yessql-indexes - crestapps-core-a2a
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-a2a - crestapps-core-ai-agents
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-ai-agents - crestapps-core-ai-markdown
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-ai-markdown - crestapps-core-ai-memory
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-ai-memory - crestapps-core-ai-model-capabilities
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-ai-model-capabilities - crestapps-core-ai-personas
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-ai-personas - crestapps-core-ai-profiles
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-ai-profiles - crestapps-core-ai-runtime
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-ai-runtime - crestapps-core-ai-templates
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-ai-templates - crestapps-core-ai-usage-metering
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-ai-usage-metering - crestapps-core-aspnet-hosting
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-aspnet-hosting - crestapps-core-azure-ai-inference
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-azure-ai-inference - crestapps-core-azure-ai-search
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-azure-ai-search - crestapps-core-azure-openai
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-azure-openai - crestapps-core-chat
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-chat - crestapps-core-chat-interactions
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-chat-interactions - crestapps-core-claude-orchestrator
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-claude-orchestrator - crestapps-core-context-builders
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-context-builders - crestapps-core-copilot-orchestrator
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-copilot-orchestrator - crestapps-core-custom-tools
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-custom-tools - crestapps-core-data-sources
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-data-sources - crestapps-core-data-storage
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-data-storage - crestapps-core-document-agents
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-document-agents - crestapps-core-document-processing
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-document-processing - crestapps-core-elasticsearch
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-elasticsearch - crestapps-core-entitycore-stores
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-entitycore-stores - crestapps-core-extensible-entities
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-extensible-entities - crestapps-core-external-relays
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-external-relays - crestapps-core-file-sources
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-file-sources - crestapps-core-foundations
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-foundations - crestapps-core-mcp
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-mcp - crestapps-core-mcp-file-resources
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-mcp-file-resources - crestapps-core-ollama
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-ollama - crestapps-core-openai
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-openai - crestapps-core-orchestration
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-orchestration - crestapps-core-overview
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-overview - crestapps-core-postgresql
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-postgresql - crestapps-core-prompt-security
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-prompt-security - crestapps-core-realtime-voice
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-realtime-voice - crestapps-core-resilience
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-resilience - crestapps-core-response-handlers
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-response-handlers - crestapps-core-sample-hosts
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-sample-hosts - crestapps-core-signalr
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-signalr - crestapps-core-templates
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-templates - crestapps-core-tool-instances
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-tool-instances - crestapps-core-web-crawlers
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-web-crawlers - crestapps-core-yessql-stores
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-yessql-stores - orchardcore-addresses
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-addresses - orchardcore-ai
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai - orchardcore-ai-a2a-client
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-a2a-client - orchardcore-ai-a2a-host
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-a2a-host - orchardcore-ai-agent
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-agent - orchardcore-ai-chat
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-chat - orchardcore-ai-chat-analytics
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-chat-analytics - orchardcore-ai-chat-claude
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-chat-claude - orchardcore-ai-chat-copilot
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-chat-copilot - orchardcore-ai-chat-interactions
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-chat-interactions - orchardcore-ai-chat-notifications
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-chat-notifications - orchardcore-ai-connections
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-connections - orchardcore-ai-data-sources
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-data-sources - orchardcore-ai-documents
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-documents - orchardcore-ai-documents-azure-storage
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-documents-azure-storage - orchardcore-ai-documents-azureai
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-documents-azureai - orchardcore-ai-documents-elasticsearch
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-documents-elasticsearch - orchardcore-ai-documents-extractors
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-documents-extractors - orchardcore-ai-file-sources
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-file-sources - orchardcore-ai-mcp
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-mcp - orchardcore-ai-mcp-client
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-mcp-client - orchardcore-ai-mcp-resources
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-mcp-resources - orchardcore-ai-mcp-server
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-mcp-server - orchardcore-ai-memory
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-memory - orchardcore-ai-memory-azureai
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-memory-azureai - orchardcore-ai-memory-elasticsearch
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-memory-elasticsearch - orchardcore-ai-model-capabilities
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-model-capabilities - orchardcore-ai-personas
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-personas - orchardcore-ai-profile-builder
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-profile-builder - orchardcore-ai-profile-templates
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-profile-templates - orchardcore-ai-prompting
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-prompting - orchardcore-ai-providers
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-providers - orchardcore-ai-realtime-voice
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-realtime-voice - orchardcore-ai-response-handlers
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-response-handlers - orchardcore-ai-tool-instances
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-tool-instances - orchardcore-ai-tools
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-tools - orchardcore-ai-usage-analytics
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-usage-analytics - orchardcore-ai-web-crawlers
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-web-crawlers - orchardcore-ai-workflows
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-workflows - orchardcore-bookings
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-bookings - orchardcore-carts
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-carts - orchardcore-checkout
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-checkout - orchardcore-classifieds
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-classifieds - orchardcore-commerce
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-commerce - orchardcore-companies
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-companies - orchardcore-contact-center
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-contact-center - orchardcore-content-access-control
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-content-access-control - orchardcore-content-transfer
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-content-transfer - orchardcore-crestapps-content-fields
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-crestapps-content-fields - orchardcore-crestapps-recipes
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-crestapps-recipes - orchardcore-crestapps-resources
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-crestapps-resources - orchardcore-crestapps-roles
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-crestapps-roles - orchardcore-crestapps-users
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-crestapps-users - orchardcore-custom-indexing-azureai
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-custom-indexing-azureai - orchardcore-custom-indexing-elasticsearch
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-custom-indexing-elasticsearch - orchardcore-customers
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-customers - orchardcore-dnc-registry
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-dnc-registry - orchardcore-downloads
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-downloads - orchardcore-fundraising
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-fundraising - orchardcore-inventory
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-inventory - orchardcore-marketing
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-marketing - orchardcore-marketplace
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-marketplace - orchardcore-markets
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-markets - orchardcore-memberships
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-memberships - orchardcore-omnichannel
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-omnichannel - orchardcore-omnichannel-event-grid
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-omnichannel-event-grid - orchardcore-omnichannel-management
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-omnichannel-management - orchardcore-omnichannel-messaging
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-omnichannel-messaging - orchardcore-omnichannel-sms
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-omnichannel-sms - orchardcore-omnichannel-voice
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-omnichannel-voice - orchardcore-orders
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-orders - orchardcore-pay-later
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-pay-later - orchardcore-payments
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-payments - orchardcore-phone-number-verifications
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-phone-number-verifications - orchardcore-phone-numbers
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-phone-numbers - orchardcore-point-of-sale
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-point-of-sale - orchardcore-products
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-products - orchardcore-receipts
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-receipts - orchardcore-report-builder
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-report-builder - orchardcore-reports
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-reports - orchardcore-reviews
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-reviews - orchardcore-shipping
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-shipping - orchardcore-signalr
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-signalr - orchardcore-subscriptions
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-subscriptions - orchardcore-taxation
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-taxation - orchardcore-telephony
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-telephony - orchardcore-telephony-asterisk
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-telephony-asterisk - orchardcore-telephony-telnyx
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-telephony-telnyx - orchardcore-tenant-hierarchy
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-tenant-hierarchy - orchardcore-time-zones
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-time-zones - orchardcore-transactions
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-transactions - orchardcore-websockets
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-websockets - orchardcore-wizard
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-wizard - orchardcore-admin
src/CrestApps.AgentSkills/orchardcore/orchardcore-admin - orchardcore-admin-dashboard
src/CrestApps.AgentSkills/orchardcore/orchardcore-admin-dashboard - orchardcore-admin-edit-views
src/CrestApps.AgentSkills/orchardcore/orchardcore-admin-edit-views - orchardcore-admin-lists
src/CrestApps.AgentSkills/orchardcore/orchardcore-admin-lists - orchardcore-admin-menu
src/CrestApps.AgentSkills/orchardcore/orchardcore-admin-menu - orchardcore-alias
src/CrestApps.AgentSkills/orchardcore/orchardcore-alias - orchardcore-amazon-s3-media
src/CrestApps.AgentSkills/orchardcore/orchardcore-amazon-s3-media - orchardcore-antivirus
src/CrestApps.AgentSkills/orchardcore/orchardcore-antivirus - orchardcore-archive-later
src/CrestApps.AgentSkills/orchardcore/orchardcore-archive-later - orchardcore-asset-manager
src/CrestApps.AgentSkills/orchardcore/orchardcore-asset-manager - orchardcore-audit-trail
src/CrestApps.AgentSkills/orchardcore/orchardcore-audit-trail - orchardcore-auto-setup
src/CrestApps.AgentSkills/orchardcore/orchardcore-auto-setup - orchardcore-autoroute
src/CrestApps.AgentSkills/orchardcore/orchardcore-autoroute - orchardcore-azure-ai-search
src/CrestApps.AgentSkills/orchardcore/orchardcore-azure-ai-search - orchardcore-azure-data-protection
src/CrestApps.AgentSkills/orchardcore/orchardcore-azure-data-protection - orchardcore-azure-key-vault
src/CrestApps.AgentSkills/orchardcore/orchardcore-azure-key-vault - orchardcore-azure-media
src/CrestApps.AgentSkills/orchardcore/orchardcore-azure-media - orchardcore-background-tasks
src/CrestApps.AgentSkills/orchardcore/orchardcore-background-tasks - orchardcore-blazor
src/CrestApps.AgentSkills/orchardcore/orchardcore-blazor - orchardcore-breadcrumbs
src/CrestApps.AgentSkills/orchardcore/orchardcore-breadcrumbs - orchardcore-caching
src/CrestApps.AgentSkills/orchardcore/orchardcore-caching - orchardcore-configuration
src/CrestApps.AgentSkills/orchardcore/orchardcore-configuration - orchardcore-content-definition-handlers
src/CrestApps.AgentSkills/orchardcore/orchardcore-content-definition-handlers - orchardcore-content-fields
src/CrestApps.AgentSkills/orchardcore/orchardcore-content-fields - orchardcore-content-items
src/CrestApps.AgentSkills/orchardcore/orchardcore-content-items - orchardcore-content-localization
src/CrestApps.AgentSkills/orchardcore/orchardcore-content-localization - orchardcore-content-parts
src/CrestApps.AgentSkills/orchardcore/orchardcore-content-parts - orchardcore-content-preview
src/CrestApps.AgentSkills/orchardcore/orchardcore-content-preview - orchardcore-content-queries
src/CrestApps.AgentSkills/orchardcore/orchardcore-content-queries - orchardcore-content-relationships
src/CrestApps.AgentSkills/orchardcore/orchardcore-content-relationships - orchardcore-content-types
src/CrestApps.AgentSkills/orchardcore/orchardcore-content-types - orchardcore-contents-admin-list-filters
src/CrestApps.AgentSkills/orchardcore/orchardcore-contents-admin-list-filters - orchardcore-contents-api
src/CrestApps.AgentSkills/orchardcore/orchardcore-contents-api - orchardcore-cors
src/CrestApps.AgentSkills/orchardcore/orchardcore-cors - orchardcore-custom-settings
src/CrestApps.AgentSkills/orchardcore/orchardcore-custom-settings - orchardcore-custom-user-settings
src/CrestApps.AgentSkills/orchardcore/orchardcore-custom-user-settings - orchardcore-data
src/CrestApps.AgentSkills/orchardcore/orchardcore-data - orchardcore-data-formulas
src/CrestApps.AgentSkills/orchardcore/orchardcore-data-formulas - orchardcore-data-localization
src/CrestApps.AgentSkills/orchardcore/orchardcore-data-localization - orchardcore-data-migrations
src/CrestApps.AgentSkills/orchardcore/orchardcore-data-migrations - orchardcore-data-pipeline-steps
src/CrestApps.AgentSkills/orchardcore/orchardcore-data-pipeline-steps - orchardcore-data-pipelines
src/CrestApps.AgentSkills/orchardcore/orchardcore-data-pipelines - orchardcore-data-sources
src/CrestApps.AgentSkills/orchardcore/orchardcore-data-sources - orchardcore-decoupled-cms
src/CrestApps.AgentSkills/orchardcore/orchardcore-decoupled-cms - orchardcore-deferred-tasks
src/CrestApps.AgentSkills/orchardcore/orchardcore-deferred-tasks - orchardcore-deployment-remote
src/CrestApps.AgentSkills/orchardcore/orchardcore-deployment-remote - orchardcore-deployments
src/CrestApps.AgentSkills/orchardcore/orchardcore-deployments - orchardcore-diagnostics
src/CrestApps.AgentSkills/orchardcore/orchardcore-diagnostics - orchardcore-display-management
src/CrestApps.AgentSkills/orchardcore/orchardcore-display-management - orchardcore-docker
src/CrestApps.AgentSkills/orchardcore/orchardcore-docker - orchardcore-dynamic-cache
src/CrestApps.AgentSkills/orchardcore/orchardcore-dynamic-cache - orchardcore-elasticsearch
src/CrestApps.AgentSkills/orchardcore/orchardcore-elasticsearch - orchardcore-email
src/CrestApps.AgentSkills/orchardcore/orchardcore-email - orchardcore-email-azure
src/CrestApps.AgentSkills/orchardcore/orchardcore-email-azure - orchardcore-email-smtp
src/CrestApps.AgentSkills/orchardcore/orchardcore-email-smtp - orchardcore-facebook
src/CrestApps.AgentSkills/orchardcore/orchardcore-facebook - orchardcore-features
src/CrestApps.AgentSkills/orchardcore/orchardcore-features - orchardcore-feeds
src/CrestApps.AgentSkills/orchardcore/orchardcore-feeds - orchardcore-file-upload-security
src/CrestApps.AgentSkills/orchardcore/orchardcore-file-upload-security - orchardcore-flow-bagpart
src/CrestApps.AgentSkills/orchardcore/orchardcore-flow-bagpart - orchardcore-forms
src/CrestApps.AgentSkills/orchardcore/orchardcore-forms - orchardcore-github-authentication
src/CrestApps.AgentSkills/orchardcore/orchardcore-github-authentication - orchardcore-google
src/CrestApps.AgentSkills/orchardcore/orchardcore-google - orchardcore-graphql
src/CrestApps.AgentSkills/orchardcore/orchardcore-graphql - orchardcore-health-checks
src/CrestApps.AgentSkills/orchardcore/orchardcore-health-checks - orchardcore-html
src/CrestApps.AgentSkills/orchardcore/orchardcore-html - orchardcore-https
src/CrestApps.AgentSkills/orchardcore/orchardcore-https - orchardcore-indexing
src/CrestApps.AgentSkills/orchardcore/orchardcore-indexing - orchardcore-indexing-sources
src/CrestApps.AgentSkills/orchardcore/orchardcore-indexing-sources - orchardcore-layers
src/CrestApps.AgentSkills/orchardcore/orchardcore-layers - orchardcore-liquid
src/CrestApps.AgentSkills/orchardcore/orchardcore-liquid - orchardcore-lists
src/CrestApps.AgentSkills/orchardcore/orchardcore-lists - orchardcore-localization
src/CrestApps.AgentSkills/orchardcore/orchardcore-localization - orchardcore-localization-source
src/CrestApps.AgentSkills/orchardcore/orchardcore-localization-source - orchardcore-logging-serilog
src/CrestApps.AgentSkills/orchardcore/orchardcore-logging-serilog - orchardcore-lucene
src/CrestApps.AgentSkills/orchardcore/orchardcore-lucene - orchardcore-markdown
src/CrestApps.AgentSkills/orchardcore/orchardcore-markdown - orchardcore-media
src/CrestApps.AgentSkills/orchardcore/orchardcore-media - orchardcore-media-gallery
src/CrestApps.AgentSkills/orchardcore/orchardcore-media-gallery - orchardcore-media-slugify
src/CrestApps.AgentSkills/orchardcore/orchardcore-media-slugify - orchardcore-menus
src/CrestApps.AgentSkills/orchardcore/orchardcore-menus - orchardcore-microsoft-auth
src/CrestApps.AgentSkills/orchardcore/orchardcore-microsoft-auth - orchardcore-mini-profiler
src/CrestApps.AgentSkills/orchardcore/orchardcore-mini-profiler - orchardcore-module-creator
src/CrestApps.AgentSkills/orchardcore/orchardcore-module-creator - orchardcore-modules
src/CrestApps.AgentSkills/orchardcore/orchardcore-modules - orchardcore-navigation
src/CrestApps.AgentSkills/orchardcore/orchardcore-navigation - orchardcore-notifications
src/CrestApps.AgentSkills/orchardcore/orchardcore-notifications - orchardcore-openapi
src/CrestApps.AgentSkills/orchardcore/orchardcore-openapi - orchardcore-openid
src/CrestApps.AgentSkills/orchardcore/orchardcore-openid - orchardcore-permission-providers
src/CrestApps.AgentSkills/orchardcore/orchardcore-permission-providers - orchardcore-placement
src/CrestApps.AgentSkills/orchardcore/orchardcore-placement - orchardcore-publish-later
src/CrestApps.AgentSkills/orchardcore/orchardcore-publish-later - orchardcore-rate-limits
src/CrestApps.AgentSkills/orchardcore/orchardcore-rate-limits - orchardcore-razor
src/CrestApps.AgentSkills/orchardcore/orchardcore-razor - orchardcore-recaptcha
src/CrestApps.AgentSkills/orchardcore/orchardcore-recaptcha - orchardcore-recipes
src/CrestApps.AgentSkills/orchardcore/orchardcore-recipes - orchardcore-redis
src/CrestApps.AgentSkills/orchardcore/orchardcore-redis - orchardcore-resources
src/CrestApps.AgentSkills/orchardcore/orchardcore-resources - orchardcore-reverse-proxy
src/CrestApps.AgentSkills/orchardcore/orchardcore-reverse-proxy - orchardcore-rules
src/CrestApps.AgentSkills/orchardcore/orchardcore-rules - orchardcore-sanitizer
src/CrestApps.AgentSkills/orchardcore/orchardcore-sanitizer - orchardcore-scripting
src/CrestApps.AgentSkills/orchardcore/orchardcore-scripting - orchardcore-search-indexing
src/CrestApps.AgentSkills/orchardcore/orchardcore-search-indexing - orchardcore-search-providers
src/CrestApps.AgentSkills/orchardcore/orchardcore-search-providers - orchardcore-security
src/CrestApps.AgentSkills/orchardcore/orchardcore-security - orchardcore-seo
src/CrestApps.AgentSkills/orchardcore/orchardcore-seo - orchardcore-setup
src/CrestApps.AgentSkills/orchardcore/orchardcore-setup - orchardcore-shape-discovery
src/CrestApps.AgentSkills/orchardcore/orchardcore-shape-discovery - orchardcore-shapes
src/CrestApps.AgentSkills/orchardcore/orchardcore-shapes - orchardcore-shells
src/CrestApps.AgentSkills/orchardcore/orchardcore-shells - orchardcore-shortcodes
src/CrestApps.AgentSkills/orchardcore/orchardcore-shortcodes - orchardcore-site-settings
src/CrestApps.AgentSkills/orchardcore/orchardcore-site-settings - orchardcore-sitemaps
src/CrestApps.AgentSkills/orchardcore/orchardcore-sitemaps - orchardcore-sms
src/CrestApps.AgentSkills/orchardcore/orchardcore-sms - orchardcore-sms-azure
src/CrestApps.AgentSkills/orchardcore/orchardcore-sms-azure - orchardcore-source-generators
src/CrestApps.AgentSkills/orchardcore/orchardcore-source-generators - orchardcore-spatial
src/CrestApps.AgentSkills/orchardcore/orchardcore-spatial - orchardcore-sql-indexing
src/CrestApps.AgentSkills/orchardcore/orchardcore-sql-indexing - orchardcore-startup-code
src/CrestApps.AgentSkills/orchardcore/orchardcore-startup-code - orchardcore-taxonomies
src/CrestApps.AgentSkills/orchardcore/orchardcore-taxonomies - orchardcore-temp-file-storage
src/CrestApps.AgentSkills/orchardcore/orchardcore-temp-file-storage - orchardcore-templates
src/CrestApps.AgentSkills/orchardcore/orchardcore-templates - orchardcore-tenants
src/CrestApps.AgentSkills/orchardcore/orchardcore-tenants - orchardcore-tester
src/CrestApps.AgentSkills/orchardcore/orchardcore-tester - orchardcore-theme-creator
src/CrestApps.AgentSkills/orchardcore/orchardcore-theme-creator - orchardcore-theming
src/CrestApps.AgentSkills/orchardcore/orchardcore-theming - orchardcore-twitter
src/CrestApps.AgentSkills/orchardcore/orchardcore-twitter - orchardcore-unit-test
src/CrestApps.AgentSkills/orchardcore/orchardcore-unit-test - orchardcore-url-rewriting
src/CrestApps.AgentSkills/orchardcore/orchardcore-url-rewriting - orchardcore-users-admin-list-filters
src/CrestApps.AgentSkills/orchardcore/orchardcore-users-admin-list-filters - orchardcore-users-roles
src/CrestApps.AgentSkills/orchardcore/orchardcore-users-roles - orchardcore-widgets
src/CrestApps.AgentSkills/orchardcore/orchardcore-widgets - orchardcore-workflows
src/CrestApps.AgentSkills/orchardcore/orchardcore-workflows - orchardcore-xml-rpc
src/CrestApps.AgentSkills/orchardcore/orchardcore-xml-rpc - orchardcore-yessql-indexes
src/CrestApps.AgentSkills/orchardcore/orchardcore-yessql-indexes
How it works
crestapps-core-a2a
When your agent uses it
Skill for Agent-to-Agent (A2A) protocol support in CrestApps.Core on the A2A 1.0 SDK. Covers AddA2AClient and AddCoreAIA2AClient with Entity Framework Core or YesSql connection stores, A2AConnection and A2AConnectionMetadata authentication, AIProfileA2AMetadata, the agent card cache and A2AToolRegistryProvider, the listAvailableAgents, findAgentForTask and findToolsForTask tools, building an A2A host with IAgentHandler, A2AServer, ITaskStore and MapA2A, A2A 1.0 agent cards with supportedInterfaces published at /.well-known/agent-card.json, A2AHostOptions authentication and ExposeAgentsAsSkill, system agents exposed through the host, and upgrading from the 0.3 SDK.
What it loads into context
Frontmatter
211 tokensAlways available to the agent
SKILL.md
2,158 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Client
- Host
- Upgrading from 1.x
Files
../../../../.claude-plugin/marketplace.jsonasset2,408 bytesSKILL.mdcore8,637 bytes
Read SKILL.md
# CrestApps.Core A2A
Use A2A when the remote system is an agent that reasons on its own (its own model, tools and context). Use MCP (`crestapps-core-mcp`) when the remote system exposes tools or resources. `CrestApps.Core.AI.A2A` ships the client; hosting is application code built on the `A2A` and `A2A.AspNetCore` 1.0 SDK packages, using `A2AHostOptions` from the framework.
## Client
```csharp
builder.Services.AddCrestAppsCore(crestApps => crestApps
.AddAISuite(ai => ai
.AddOpenAI()
.AddA2AClient(a2a => a2a
.AddEntityCoreStores())) // or .AddYesSqlStores(); registers ICatalog<A2AConnection>
.AddEntityCoreSqliteDataStore("Data Source=app.db"));
```View the complete source on GitHubcrestapps-core-ai-agents
When your agent uses it
Skill for AI agents in CrestApps.Core 2.0, specialized AIProfile records of type Agent that the primary model invokes as tools. Covers creating agent profiles with AgentMetadata availability (OnDemand or AlwaysAvailable), linking them with AgentInvocationMetadata, how AgentProxyTool runs an agent with tools disabled or through the orchestrator when AllowToolInvocation is set, the AgentInvocationDepth recursion guard, deployment inheritance and the chat slot, code-defined and system agents through IAIProfileProvider including the Tabular Data, PDF, Presentation and Word agents, chat-specific agents that read AIInvocationScope, exposing agents to MCP clients with McpServerOptions Agents and ExposeAllAgents, and SubAgent usage labels. Use it when delegating work to sub-agents, adding a framework-managed agent, publishing an agent over MCP, or troubleshooting an agent the model does not call.
What it loads into context
Frontmatter
210 tokensAlways available to the agent
SKILL.md
1,897 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Create an Agent
- Link Agents to a Chat Profile
- How an Agent Runs
- Code-Defined and System Agents
- Agents as MCP Server Tools
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore8,795 bytes
Read SKILL.md
# CrestApps.Core AI Agents
An agent is an `AIProfile` with `Type = AIProfileType.Agent`. The primary model sees each available agent as a tool that takes one `prompt` argument and returns the agent's answer. Each agent has its own system prompt, deployment and settings, so instructions do not collide.
## Guidelines
- `AddCoreAIOrchestration()` (or `AddAISuite(...)`) registers `AgentToolRegistryProvider`; nothing else is needed.
- Every agent needs a `Name` and a strong `Description`. Agents with an empty name or description are skipped, and the description is all the model (or an MCP client) has to decide with.
- Use `OnDemand` for most agents and link them per profile. `AlwaysAvailable` agents are added to every request and cost tokens on every turn.
- By default an agent runs as one completion with tools disabled. Set `AgentMetadata.AllowToolInvocation = true` only when it needs its own tools; it then runs through its orchestrator, and agents inside it are still suppressed.
- Leave `ChatDeploymentName` empty to inherit the caller's chat deployment, or name a cheaper or more capable model for the agent.
## Create an Agent
View the complete source on GitHubcrestapps-core-ai-markdown
When your agent uses it
Skill for Markdig-backed Markdown normalization in CrestApps.Core 2.0 AI document, data source and RAG flows. Covers the CrestApps.Core.AI.Markdown package, AddMarkdown on the AI suite builder and AddCoreAIMarkdown on IServiceCollection, MarkdownAITextNormalizer replacing the default IAITextNormalizer, RagTextNormalizer content, chunk and title normalization with HTML stripping and Microsoft.Extensions.DataIngestion.Markdig parsing, the gpt-4o tokenizer chunker with 500 tokens per chunk and 50 tokens of overlap, the plain-text fallback for unsupported inline types, where the normalizer is used (data source indexing, preemptive retrieval, reference titles), and pairing it with document processing. Use it when indexing Markdown-heavy content for retrieval, replacing the text normalizer, or troubleshooting chunk sizes and leftover markup in retrieved text.
What it loads into context
Frontmatter
208 tokensAlways available to the agent
SKILL.md
1,212 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Register
- Behavior
- Where It Is Used
- Custom Normalizer
- Troubleshooting
Files
SKILL.mdcore5,600 bytesSKILL.mdcore5,600 bytesSKILL.mdcore5,600 bytesSKILL.mdcore5,600 bytesSKILL.mdcore5,600 bytes
Read SKILL.md
# CrestApps.Core AI Markdown
`CrestApps.Core.AI.Markdown` makes text normalization Markdown-aware. It is opt-in: `AddCoreAIServices()` registers only the plain `DefaultAITextNormalizer`, and the core AI package does not depend on Markdig.
## Guidelines
- Reference the `CrestApps.Core.AI.Markdown` package and call `AddMarkdown()` on `CrestAppsAISuiteBuilder`, or `AddCoreAIMarkdown()` on `IServiceCollection` (namespace `CrestApps.Core.AI.Markdown`).
- Registration adds `MarkdownAITextNormalizer` as the singleton `IAITextNormalizer`. The base registration uses `TryAddSingleton` and this one uses `AddSingleton`, so the Markdown normalizer wins whichever is called first.
- The normalizer delegates to the static `RagTextNormalizer`: HTML is stripped, the text is parsed through `Microsoft.Extensions.DataIngestion.Markdig`, and plain text is extracted before whitespace is normalized.
- `AddMarkdown()` does not register document stores, readers or upload endpoints. Add document processing or ingestion separately (`crestapps-core-document-processing`).
## Register
```csharpView the complete source on GitHubcrestapps-core-ai-memory
When your agent uses it
Skill for durable, user-scoped AI memory in CrestApps.Core. Covers AddAIMemory and AddCoreAIMemory, Entity Framework Core and YesSql memory stores, the AIMemory index profile and the AddAIMemory option on the Elasticsearch, Azure AI Search and PostgreSQL backends, AIMemoryOptions IndexProfileName and TopN, enabling memory per AI profile with MemoryMetadata and for chat interactions with ChatInteractionMemoryOptions, preemptive memory retrieval through GeneralAIOptions, the save_user_memory, search_user_memories, list_user_memories and remove_user_memory tools, IAIMemorySafetyService validation, and custom IMemoryVectorSearchService implementations.
What it loads into context
Frontmatter
169 tokensAlways available to the agent
SKILL.md
1,155 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Registration
- Turning Memory On
- Tools
- Contracts
- Custom Safety Rules
- Custom Vector Backend
Files
SKILL.mdcore5,023 bytes
Read SKILL.md
# CrestApps.Core AI Memory
Memory stores long-lived facts about the authenticated user (preferences, projects, roles) and recalls them in later conversations. It is not for transient chat state.
## Registration
```csharp
builder.Services.AddCrestAppsCore(crestApps => crestApps
.AddAISuite(ai => ai
.AddOpenAI()
.AddAIMemory(memory => memory
.AddEntityCoreStores())) // or .AddYesSqlStores()
.AddIndexingServices(indexing => indexing
.AddEntityCoreStores()View the complete source on GitHubcrestapps-core-ai-model-capabilities
When your agent uses it
Skill for metadata-driven deployment capabilities in CrestApps.Core 2.0. Covers trained model features such as textGeneration, toolCalling, streaming, reasoning, realtime, textEmbedding, speechToText and textToSpeech, model parameters such as reasoningEffort, declaring them with AIDeploymentMetadata or the Features and Parameters configuration shorthand for Azure App Service settings, registering custom features, parameters and slots with AddAIDeploymentFeature, AddAIDeploymentParameter, AddAIDeploymentSlot and AIDeploymentCapabilityOptions, IAIDeploymentCapabilityService, deployment slots and their resolution chain, AIDeploymentParametersMetadata chat and utility values, IAIDeploymentParameterBinder, UseModelParameters, capability enforcement, the ChatApi Responses routing for reasoning with tools, capability-aware chat UIs, and migrating from AIDeploymentPurpose. Use it when declaring what a model supports, adding a new knob, or fixing stripped tools, missing pickers, or reasoning-effort errors.
What it loads into context
Frontmatter
239 tokensAlways available to the agent
SKILL.md
3,360 tokensWhen the skill is activated
Reference documents
1,233 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Built-in Definitions
- Declaring Capabilities
- Asking What a Deployment Supports
- Slots
- Registering Features and Parameters
- Selected Values and Runtime Binding
- Reasoning with Tools on the Responses API
- Capability-Aware Chat UIs
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore14,427 bytesreferences/model-capabilities-examples.mddoc5,618 bytes
Read SKILL.md
# CrestApps.Core AI Model Capabilities
A deployment declares what its model can do. Two kinds of definitions are registered once at startup and referenced by name:
| Concept | Shape | Example |
|---|---|---|
| **Feature** | A trained capability the model has or lacks | `toolCalling`, `reasoning`, `realtime` |
| **Parameter** | A configurable option with a kind, allowed values, range and default | `reasoningEffort` |
| **Slot** | What this installation uses a deployment for; pairs a required feature with a site default | `chat`, `embedding`, `realtime` |
Capabilities live on the deployment. Slots are derived from them: declaring `textEmbedding` is what puts a model in the embedding picker. There is no purpose flag to set.
## Guidelines
View the complete source on GitHubcrestapps-core-ai-personas
When your agent uses it
Skill for AI personas in CrestApps.Core 2.0, reusable characters with instructions, an assistant name, language, voice and avatar that AI profiles, chat interactions and profile templates link to by name. Covers opting in with AddPersonas and AddYesSqlStores or AddEntityCoreStores, CreateAIPersonaIndexSchemaAsync, IAIPersonaManager, persona Markdown files under Templates Personas and AddEmbeddedPersonas, linking with AIPersonaMetadata or the top-level PersonaId, how the persona block is prepended to the system message with the assistant_name Liquid variable, voice selection with IAIPersonaResolver SelectVoiceAsync, the ResolvePersonaAsync and SelectPersonaVoiceAsync service-provider helpers, showing the assistant name and avatar with AIChatAssistantDisplay, and custom IAIPersonaProvider sources. Use it when giving assistants a consistent identity across profiles, or when a persona's instructions, name or voice do not apply.
What it loads into context
Frontmatter
225 tokensAlways available to the agent
SKILL.md
2,060 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Registration
- What a Persona Holds
- Managing Personas
- Persona Files
- Linking a Persona
- How It Is Applied
- Voice
- Assistant Name and Avatar in Chat
- Custom Persona Source
- Related Skills
Files
SKILL.mdcore9,411 bytes
Read SKILL.md
# CrestApps.Core AI Personas
A persona says **who** the assistant is: its instructions, the name it uses, its language, voice and avatar. The profile's system message and prompt templates still say **what** it does. A resource links to one optional persona by its technical name, so editing the persona changes every profile, interaction and template that links to it from the next message. Personas are not AI templates: a template is copied when used, a persona stays linked.
## Guidelines
- Personas are opt-in. Without `AddPersonas(...)`, persona links are kept but ignored and chats run with the profile's own instructions and voice.
- Link by `Name`, never by item id. Names survive export and import across tenants; ids do not. A persona's name cannot change once saved.
- Keep business rules in the profile. The persona block comes first in the system message, so the profile's rules win a conflict.
- Greetings stay with the profile's welcome message so one persona can serve profiles that open differently.
- Resolve personas only through `IAIPersonaResolver` (or the service-provider helpers) so chat, chat interactions, realtime and voice behave the same.
## Registration
View the complete source on GitHubcrestapps-core-ai-profiles
When your agent uses it
Skill for designing CrestApps.Core 2.0 AI Profiles, the reusable contract that controls prompts, deployments, tools, agents, retrieval, memory, persona, chat mode and session behavior. Covers AIProfile fields and types (Chat, Utility, TemplatePrompt, Agent), chat and utility deployment selection resolved through slots, AIProfileMetadata, FunctionInvocationMetadata, AgentInvocationMetadata, PromptTemplateMetadata, AIDeploymentParametersMetadata chat and utility model parameters, AIPersonaMetadata, ChatModeProfileSettings with ConversationDeploymentName, PromptSecurityProfileSettings, ResponseHandlerProfileSettings, IAIProfileManager and code-defined IAIProfileProvider profiles, Markdown profile templates under Templates Profiles, the profile as the tool authorization boundary, and upgrading from the removed RealtimeDeploymentName and ChatMode Realtime. Use it when creating or editing profiles in code, choosing what belongs on a profile versus a deployment, or troubleshooting profile behavior.
What it loads into context
Frontmatter
220 tokensAlways available to the agent
SKILL.md
2,145 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Building Blocks
- Profile Types
- Creating a Profile in Code
- What Lives on a Profile
- Code-Defined Profiles
- Profile Templates
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore9,879 bytes
Read SKILL.md
# CrestApps.Core AI Profiles
A deployment answers "which model runs". An AI Profile answers "how should this experience behave": instructions, deployments, orchestrator, tools, agents, knowledge, memory, persona, chat mode and post-session rules. AI Chat sessions, agents and orchestrators all read the profile.
## Guidelines
- Validate a connection and deployment with Chat Interactions first; move to a profile when the behavior must be reusable.
- Keep model choice in deployments and behavior in the profile. Reference deployments by name; the runtime resolves them through slots.
- Prefer several focused profiles over one overloaded profile. Use agents (`crestapps-core-ai-agents`) to delegate specialized work.
- Put identity and tone in a persona (`crestapps-core-ai-personas`) when several profiles should share it.
- The profile is the tool authorization boundary for AI sessions: every tool, MCP connection and agent the author attached runs for any caller allowed to use the profile, including anonymous ones. Only attach what every caller may use.
## Building Blocks
View the complete source on GitHubcrestapps-core-ai-runtime
When your agent uses it
Skill for the provider-agnostic AI runtime in CrestApps.Core 2.0. Covers AddCoreAIServices and AddAISuite registration, provider connections and configured deployments under CrestApps AI Connections and Deployments, declaring deployment Features instead of the removed Purpose or Type, resolving deployments through slots with IAIDeploymentManager ResolveSlotAsync, GetAllBySlotAsync, ResolveUtilityOrDefaultAsync and ResolveSlotOrThrowAsync, DefaultAIDeploymentSettings site defaults, IAIClientFactory chat, embedding, image, speech and realtime clients, IAICompletionService and IAICompletionContextBuilder, custom IAICompletionClient providers, and upgrading 1.x code that used AIDeploymentPurpose. Use it when wiring AI services into an ASP.NET Core host, picking a deployment in code, or troubleshooting deployments that do not resolve.
What it loads into context
Frontmatter
204 tokensAlways available to the agent
SKILL.md
2,792 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Registration
- Connections and Deployments
- Resolving a Deployment
- Key Runtime Services
- Example Completion Service
- Direct Clients
- Custom Providers
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore12,439 bytes
Read SKILL.md
# CrestApps.Core AI Runtime
The runtime is the provider-agnostic layer every other AI feature builds on. A **connection** holds credentials and an endpoint, a **deployment** names a model on a connection and declares what that model can do, and a **slot** says what the installation uses a deployment for.
## Guidelines
- Prefer `AddCrestAppsCore(...).AddAISuite(...)` for application composition. Use `AddCoreAIServices()` only when the host composes raw service registrations itself.
- Program against `IAIClientFactory`, `IAICompletionService`, `IAICompletionContextBuilder` and `IAIDeploymentManager`. Never create a provider SDK client in business code.
- Every configured deployment declares its model capabilities through `Features`. A configured entry with no features and no legacy purpose is skipped at startup with the warning "declares no model capabilities".
- Pick deployments through slots (`AIDeploymentSlotNames`) and `ResolveSlotAsync(...)`. There is no deployment purpose or type in 2.0.
- Use `crestapps-core-ai-model-capabilities` for registering features, parameters and slots, `crestapps-core-ai-usage-metering` for usage records, and the provider skills (`crestapps-core-openai`, `crestapps-core-azure-openai`, `crestapps-core-ollama`, `crestapps-core-azure-ai-inference`) for provider-specific settings.
## Registration
View the complete source on GitHubcrestapps-core-ai-templates
When your agent uses it
Skill for Liquid prompt templates in CrestApps.Core 2.0. Covers AddCoreAITemplating and AddTemplating registration, Markdown templates with front matter under Templates and Templates Prompts, AddTemplatesFromAssembly, code and discovery-path templates through TemplateOptions, ITemplateService ListAsync, GetAsync, RenderAsync and MergeAsync, ITemplateEngine validation, custom ITemplateProvider and IDynamicTemplateProvider sources, template Aliases, the AIProfileSystemPromptTemplateProvider that exposes SystemPrompt AI profile templates by name, selecting templates on a profile with PromptTemplateMetadata, and how templates compose with personas. Use it when authoring reusable system prompts, loading templates from a database, or fixing a selected template that does not render.
What it loads into context
Frontmatter
183 tokensAlways available to the agent
SKILL.md
1,583 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Registration
- Template Example
- Using Templates
- Selecting Templates on a Profile
- Custom Providers
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore7,387 bytes
Read SKILL.md
# CrestApps.Core AI Templates
Prompts are Markdown files with YAML front matter, rendered with Liquid (Fluid) and discovered from embedded resources, the file system, code, or custom providers.
## Guidelines
- `AddCoreAIServices()` already chains `AddCoreAITemplating()`; call it directly only when using templating on its own.
- Keep each template to one concern (tone, safety, RAG rules) and compose at runtime with `MergeAsync` or profile selections.
- Put system prompts under `Templates/Prompts/` (their `Kind` defaults to `SystemPrompt`). Files directly under `Templates/` must declare `Kind`. Generic `Templates/` discovery is not recursive.
- Use a persona (`crestapps-core-ai-personas`) for identity and voice instead of copying the same persona prompt into many templates.
- All `ITemplateService` and `ITemplateProvider` methods take an optional `CancellationToken`; pass it through.
## Registration
View the complete source on GitHubcrestapps-core-ai-usage-metering
When your agent uses it
Skill for AI usage metering in CrestApps.Core 2.0. Covers how every client created by IAIClientFactory (chat, embedding, image, speech-to-text, text-to-speech and realtime) records one AICompletionUsageRecord per provider request, enabling it with GeneralAIOptions EnableAIUsageTracking, the recorded units (cached, reasoning and audio tokens, audio duration, characters, images) and AIUsageOperationTypes, labeling requests by category and purpose with UseUsageLabels, AIUsageScope, AICompletionContextKeys and AIUsagePurposes, metering clients built outside the factory with AIUsageMetering Meter, observing records with IAICompletionUsageObserver, storing them with IAICompletionUsageStore, and building per-model, per-category and per-purpose reports with AIUsageReport. Use it when pricing or attributing AI usage, building a usage dashboard, or troubleshooting missing or mislabeled usage records.
What it loads into context
Frontmatter
223 tokensAlways available to the agent
SKILL.md
2,212 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Enable Metering and Storage
- What a Record Holds
- Labeling Requests
- Metering a Client Built Outside the Factory
- Observing Records
- Reports
- Provider Notes
- Upgrading from 1.x
Files
SKILL.mdcore10,058 bytes
Read SKILL.md
# CrestApps.Core AI Usage Metering
Every client `IAIClientFactory` returns meters its own requests by wrapping the provider's client and reading the provider-agnostic `UsageDetails` on each response. That covers every provider, including custom `IAIClientProvider` implementations, with no provider code.
## Guidelines
- Turn metering on with `GeneralAIOptions.EnableAIUsageTracking = true`. It is off by default.
- A record is written per request sent to the provider, not per user turn. Planning, query rewrites, vision calls, each tool-calling round trip, each embedding batch and each realtime response are separate records, so the request count equals billed requests.
- Metering sits below every middleware you add, so `UseFunctionInvocation()` yields one record per round trip and a cached response yields none.
- Label your own requests with `UseUsageLabels(...)` on the client pipeline, or an `AIUsageScope` around a call into a service that creates the client for you. Labels never reach the provider.
- A client you build without the factory is not metered until you wrap it with `AIUsageMetering.Meter(...)`.
## Enable Metering and Storage
View the complete source on GitHubcrestapps-core-aspnet-hosting
When your agent uses it
Skill for composing CrestApps.Core 2.0 into ASP.NET Core MVC, Razor Pages, Blazor Web App, Minimal API, and .NET MAUI hybrid hosts. Covers Program.cs ordering, AddCrestAppsCore with a store and commit filters, middleware order (UseWebSockets before UseRouting, UseAIAnonymousVisitorCookie, rate limiting), chat hub classes derived from AIChatHubCore and ChatInteractionHubBase with ConfigureCrestAppsChatHubOptions, the WebRTC realtime transport, the document and knowledge-figure endpoints with their resource-based authorization handlers, MCP endpoint mapping, the @crestapps/ai-chat-ui browser assets, live site-settings options through IOptionsMonitor, and which helpers are sample-host code rather than package APIs. Use it when wiring CrestApps.Core into a new or existing web application or troubleshooting host startup.
What it loads into context
Frontmatter
207 tokensAlways available to the agent
SKILL.md
2,854 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Rules
- MVC Program.cs
- Chat Hubs
- Document Endpoint Authorization
- Other Application Models
- Chat UI Assets
- Live Site-Settings Options
- Sample-Host Code, Not Package APIs
- Upgrading from 1.x
Files
SKILL.mdcore12,639 bytesSKILL.mdcore12,639 bytes
Read SKILL.md
# CrestApps.Core ASP.NET Hosting
You are a CrestApps.Core expert. Register host services first, compose CrestApps through `AddCrestAppsCore(...)`, then map only the hubs and endpoints for the features the host enables.
## Rules
- Packages go in the web project. Pick a provider package, the feature packages, and one store package (`CrestApps.Core.Data.EntityCore` or `CrestApps.Core.Data.YesSql`) when records must persist.
- The service registrations are identical for MVC, Razor Pages, Blazor and Minimal APIs; only the UI and endpoint layer differs.
- Add a commit boundary for every write path: `AddCrestAppsStoreCommitterFilter()` for MVC, `.AddSignalR(addStoreCommitterFilter: true)` for hubs, `StoreCommitterEndpointFilter` for Minimal API groups, and an explicit `IStoreCommitter.CommitAsync()` in background scopes.
- Call `UseWebSockets()` before `UseRouting()`. HTTP/2 WebSocket handshakes (extended CONNECT) are otherwise rejected with 405, which breaks the realtime WebSocket transport.
- Call `UseAIAnonymousVisitorCookie()` (from `CrestApps.Core.AI.Chat`) after routing and before authentication when anonymous visitors chat, so rate limiting and session reuse get a stable visitor key.
- Every hub type that is mapped needs `ConfigureCrestAppsChatHubOptions<THub>()` (or `ConfigureChatHubOptions<THub>()` on the Chat Interactions builder). `HubOptions<THub>` is per hub type; an unconfigured hub runs on SignalR defaults (one parallel invocation per client), which deadlocks the realtime WebRTC handshake.
- The document and figure endpoints authorize against resources through `IAuthorizationService`. Register `IAuthorizationHandler` implementations that grant the requirements, or every download and upload is forbidden.
View the complete source on GitHubcrestapps-core-azure-ai-inference
When your agent uses it
Skill for using Azure AI Inference, Azure AI Foundry serverless models, and GitHub Models in CrestApps.Core 2.0. Covers AddAzureAIInference and AddCoreAIAzureAIInference registration, connections with the AzureAIInference client name, Endpoint, AuthenticationType (Default, ApiKey, ManagedIdentity) and IdentityId, configured chat and embedding deployments that declare model capabilities through Features and Parameters instead of the removed Purpose or Type, deployment slots resolved with ResolveSlotAsync, per-model capability differences such as tool calling, unsupported image, speech and realtime clients, and upgrading from 1.x. Use it when connecting a CrestApps.Core host to GitHub Models or an Azure AI model catalog endpoint, comparing model families behind one endpoint, or troubleshooting authentication, skipped deployments, or tools that never run.
What it loads into context
Frontmatter
202 tokensAlways available to the agent
SKILL.md
1,828 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Registration
- Configuration
- Resolve Through Slots
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore8,151 bytes
Read SKILL.md
# CrestApps.Core Azure AI Inference
The `CrestApps.Core.AI.AzureAIInference` package uses the `Azure.AI.Inference` SDK to reach one endpoint that serves many model families (OpenAI, Meta Llama, Mistral, Cohere, and others). It is the provider for GitHub Models and for serverless model deployments in Azure AI Foundry.
## Guidelines
- Use it for multi-model evaluation, GitHub Models prototypes, and serverless Azure model catalog deployments.
- Keep the endpoint and credentials on the connection; keep the model name and its capabilities on the deployment.
- Always set `AuthenticationType`. When it is empty the provider uses `DefaultAzureCredential`, even if `ApiKey` is set. A GitHub token needs `"AuthenticationType": "ApiKey"`.
- Only chat and embeddings are supported. Image generation, speech-to-text, text-to-speech and realtime throw `NotSupportedException`; use `crestapps-core-openai` or `crestapps-core-azure-openai` for those.
- Declare features per model. Tool calling, vision and structured outputs vary across the catalog; declare only what the chosen model supports.
## Registration
View the complete source on GitHubcrestapps-core-azure-ai-search
When your agent uses it
Skill for using Azure AI Search as the CrestApps.Core indexing and vector backend. Covers CrestApps.Core.Azure.AISearch and CrestApps.Core.AI.Azure.AISearch, AddAzureAISearch on the indexing builder with AddAIDocuments, AddAIDataSources and AddAIMemory, AddCoreAzureAISearchServices, AzureAISearchConnectionOptions with Default, ApiKey and ManagedIdentity authentication, AddAzureAISearchODataFilterTranslator, the filters complex field and typed knowledge columns, in-place schema upgrades through TryAddFieldsAsync, external Azure AI Search source mappings with IAIDataSourceChangeNotifier, and troubleshooting tier, authentication and filter errors.
What it loads into context
Frontmatter
170 tokensAlways available to the agent
SKILL.md
1,213 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Registration
- Configuration
- Filters and Typed Columns
- External Azure AI Search Sources
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore5,177 bytesSKILL.mdcore5,177 bytesSKILL.mdcore5,177 bytesSKILL.mdcore5,177 bytesSKILL.mdcore5,177 bytesSKILL.mdcore5,177 bytes
Read SKILL.md
# CrestApps.Core Azure AI Search
Use Azure AI Search as the knowledge-base backend for AI documents, AI data sources and AI memory. For the data source model see `crestapps-core-data-sources`.
## Registration
```csharp
builder.Services.AddCrestAppsCore(crestApps => crestApps
.AddAISuite(ai => ai.AddAzureOpenAI())
.AddIndexingServices(indexing => indexing
.AddYesSqlStores()
.AddAzureAISearch(
builder.Configuration.GetSection("CrestApps:AzureAISearch"),
azureAISearch => azureAISearchView the complete source on GitHubcrestapps-core-azure-openai
When your agent uses it
Skill for using Azure OpenAI and Azure AI Speech in CrestApps.Core 2.0. Covers AddAzureOpenAI and AddCoreAIAzureOpenAI registration, Azure connections with Endpoint, AuthenticationType (Default, ApiKey, ManagedIdentity), IdentityId and the ChatApi setting, the CrestApps AI AzureClient retry and logging options, configured deployments that declare model capabilities through Features and Parameters instead of the removed Purpose or Type, contained-connection AzureSpeech deployments for speech-to-text and text-to-speech with selectable audio formats and speed, deployment slots resolved with ResolveSlotAsync, reasoning requests with tools routed to the Responses endpoint, gpt-realtime speech-to-speech over the GA realtime WebSocket endpoint, and upgrading from 1.x. Use it when wiring Azure OpenAI into a CrestApps.Core host, choosing API key or managed identity authentication, or troubleshooting DefaultAzureCredential failures, DeploymentNotFound errors, skipped deployments, or reasoning-effort errors.
What it loads into context
Frontmatter
230 tokensAlways available to the agent
SKILL.md
2,942 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Registration
- Connection
- Deployments
- Azure AI Speech Formats and Speed
- Responses API and Realtime
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore12,392 bytes
Read SKILL.md
# CrestApps.Core Azure OpenAI
The `CrestApps.Core.AI.OpenAI.Azure` package connects CrestApps.Core to Azure OpenAI (client name `"Azure"`) and to Azure AI Speech (client name `"AzureSpeech"`). Use it for enterprise workloads that need regional data residency, managed identity, or private networking.
## Guidelines
- Keep the endpoint and credentials on the connection; keep the Azure deployment name and its capabilities on the deployment.
- Always set `AuthenticationType` on an Azure connection. When it is empty the provider uses `DefaultAzureCredential`, even if an `ApiKey` is present.
- Every configured deployment must declare `Features`. An entry with no features and no legacy `Purpose`/`Type` is skipped with the warning "declares no model capabilities".
- Resolve deployments through slots with `IAIDeploymentManager.ResolveSlotAsync(AIDeploymentSlotNames.X, ...)`.
- See `crestapps-core-openai` for the shared `ChatApi`, feature, and slot details, and `crestapps-core-realtime-voice` for voice sessions.
## Registration
View the complete source on GitHubcrestapps-core-chat
When your agent uses it
Skill for building deployment-aware chat completion and streaming loops in CrestApps.Core 2.0. Covers IAICompletionService CompleteAsync and CompleteStreamingAsync with AICompletionContext, resolving chat and utility deployments through slots with ResolveSlotAsync and ResolveUtilityOrDefaultAsync instead of the removed AIDeploymentPurpose, model parameters such as reasoningEffort through AICompletionContext ModelParameters and UtilityModelParameters, IsUtilityCompletion for background work, capability enforcement that strips tools, structured outputs and streaming a deployment does not declare, reasoning requests with tools routed to the Responses API, and running a profile or interaction through IOrchestrationContextBuilder, IOrchestratorResolver and IOrchestrator ExecuteStreamingAsync inside an AIInvocationScope. Use it when writing server code that sends prompts to a model, streams a reply, runs the full orchestration pipeline outside the chat hubs, or upgrades completion code from 1.x.
What it loads into context
Frontmatter
217 tokensAlways available to the agent
SKILL.md
2,187 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Registration
- Stream a Completion
- Background (Utility) Completions
- Run the Full Orchestration Pipeline
- Choose the Surface
- Provider Behavior Worth Knowing
- Upgrading from 1.x
Files
SKILL.mdcore10,516 bytesSKILL.mdcore10,516 bytes
Read SKILL.md
# CrestApps.Core Chat Completions
This skill is the server-side completion and orchestration surface. Persisted conversations, hubs, chat UI and response handlers are covered by `crestapps-core-chat-interactions`; voice sessions by `crestapps-core-realtime-voice`; providers by `crestapps-core-openai`, `crestapps-core-azure-openai`, `crestapps-core-ollama` and `crestapps-core-azure-ai-inference`.
## Guidelines
- CrestApps.Core exposes `IAICompletionService` (namespace `CrestApps.Core.AI.Completions`), not `IChatCompletionService`. It returns Microsoft.Extensions.AI `ChatResponse` and `ChatResponseUpdate`.
- Resolve the `AIDeployment` first, through a slot: `ResolveSlotAsync(AIDeploymentSlotNames.Chat, ...)` for answers and `ResolveUtilityOrDefaultAsync(...)` for background work. Do not construct provider clients in application code.
- Pass an `AICompletionContext` for the system message, sampling, tool selection, data source, and model parameters.
- Use `IOrchestrator.ExecuteStreamingAsync(...)` when the request needs a profile's tools, agents, RAG, MCP connections, or progressive tool scoping.
- The deployment's declared capabilities are enforced on every request. Tools, a JSON response format, reasoning options and streaming are removed or downgraded when the deployment does not declare `toolCalling`, `structuredOutputs`, `reasoning` or `streaming`.
## Registration
View the complete source on GitHubcrestapps-core-chat-interactions
When your agent uses it
Skill for Chat Interactions and the shared chat hubs and chat UI in CrestApps.Core 2.0. Covers AddChatInteractions with AddEntityCoreStores or AddYesSqlStores, ConfigureVisitorIdentity, ConfigureChatRateLimiting and ConfigureChatHubOptions, subclassing ChatInteractionHubBase and AIChatHubCore with AuthorizeAsync, AuthorizeProfileAsync and the other override hooks, the ChatInteraction model with chat, utility and conversation deployment names, IChatInteractionSettingsHandler, SaveSettings filter validation, send-time tool access checks through IAIToolAccessEvaluator, input-boundary delimiters, document upload endpoints, the IChatInteractionHubClient contract, the @crestapps/ai-chat-ui scripts with chat-markers, the stacked image carousel, assistant name and avatar, and upgrading from 1.x. Use it to stand up the fastest chat playground for a provider, build a chat page or widget, extend interaction settings, or troubleshoot chat hubs and chat UI.
What it loads into context
Frontmatter
231 tokensAlways available to the agent
SKILL.md
3,158 tokensWhen the skill is activated
Reference documents
1,051 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Registration
- Host the Hub
- The Interaction and Its Settings
- Security Behavior
- Documents
- Chat UI Assets
- Upgrading from 1.x
Files
SKILL.mdcore14,092 bytesSKILL.mdcore14,092 bytesreferences/chat-interactions-examples.mddoc5,188 bytes
Read SKILL.md
# CrestApps.Core Chat Interactions
A **Chat Interaction** is an operator-controlled conversation that needs no AI Profile: the interaction itself stores its deployments, system message, sampling, tools, agents, MCP connections, data source and documents. It is the fastest way to validate a provider and deployment. **AI Chat sessions** (`AIChatSession`) are the profile-based equivalent used by end-user chat pages and widgets. Both ship in `CrestApps.Core.AI.Chat` and share the same chat UI scripts.
## Guidelines
- Start with Chat Interactions to validate a connection and deployment, then move reusable behavior into an AI Profile (`crestapps-core-ai-profiles`).
- Register stores for `ChatInteraction` and `IChatInteractionPromptStore` on the chat interactions builder.
- The framework does not ship a mapped hub. Subclass `ChatInteractionHubBase` (and `AIChatHubCore<TClient>` for sessions), map it, and call `ConfigureChatHubOptions<THub>()` for each concrete hub.
- The hubs' authorization hooks return `true` by default. Override them or put `[Authorize]` on the hub.
- Chat Interactions do not get the AI Profile prompt-security preamble or injection blocking (the operator controls the prompt), but they do get input-boundary delimiters and a per-user tool access check at send time.
- Use `crestapps-core-chat` for server-side completion code, `crestapps-core-signalr` for hub routes and authentication, and `crestapps-core-realtime-voice` for voice sessions.
## RegistrationView the complete source on GitHubcrestapps-core-claude-orchestrator
When your agent uses it
Skill for the Claude orchestrator in CrestApps.Core 2.0, a named IOrchestrator ("anthropic") built on the official Anthropic C# SDK. Covers AddClaudeOrchestrator and AddCoreAIClaudeOrchestrator registration, binding ClaudeOptions (ApiKey, BaseUrl, DefaultModel) yourself because the package reads no configuration section, the ClaudeOptionsValidator and the requirement that both ApiKey and DefaultModel are set, per-profile and per-interaction overrides with ClaudeSessionMetadata ClaudeModel and ClaudeEffortLevel, ClaudeClientService model discovery, resolving it with IOrchestratorResolver, tool scoping and function invocation, and Anthropic usage metering through AIUsageMetering. Use it when running AI profiles or chat interactions on Anthropic Claude models, or when Claude reports it is not configured.
What it loads into context
Frontmatter
206 tokensAlways available to the agent
SKILL.md
1,258 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Registration
- Registered Services
- Use It
- How a Turn Runs
- Model Discovery
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore5,425 bytes
Read SKILL.md
# CrestApps.Core Claude Orchestrator
`CrestApps.Core.AI.Claude` adds `ClaudeOrchestrator`, an `IOrchestrator` named `"anthropic"` (title **Claude**). It talks to Anthropic through the official `Anthropic` NuGet package, so there is no CLI or external executable to install.
## Guidelines
- Use it when a profile or chat interaction should run on Anthropic models with the CrestApps tool pipeline. Claude does not use AI connections or deployments; the model comes from `ClaudeSessionMetadata.ClaudeModel` or `ClaudeOptions.DefaultModel`.
- The package does not bind configuration. Bind `ClaudeOptions` from your own section or site settings.
- Both `ApiKey` and `DefaultModel` must be set, or every turn answers "Claude is not configured and cannot be used until it has been configured." A per-profile model override does not replace the default-model requirement.
- Deployment model parameters such as `reasoningEffort` do not apply; Claude uses `ClaudeEffortLevel` on the session metadata.
## Registration
```csharpView the complete source on GitHubcrestapps-core-context-builders
When your agent uses it
Skill for enriching CrestApps.Core 2.0 completion and orchestration contexts with handler pipelines. Covers IAICompletionContextBuilder and IAICompletionContextBuilderHandler producing AICompletionContext, IOrchestrationContextBuilder and IOrchestrationContextBuilderHandler producing OrchestrationContext, the BuildingAsync, configure delegate and BuiltAsync phases, reverse registration order, the built-in profile, chat interaction, persona, tool instance, data source and MCP handlers, chat and utility model parameters copied onto the context, SystemMessageBuilder, reading the chat from AIInvocationScope during a build, error isolation that logs and skips a failing handler, and one-off configuration through the caller delegate. Use it when injecting tenant, user or policy context into every AI request, adding orchestration behavior, or debugging a profile whose system message, tools or parameters vanish.
What it loads into context
Frontmatter
204 tokensAlways available to the agent
SKILL.md
1,825 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Built-in Handlers
- Completion Context Handler
- Orchestration Context Handler
- Reading the Current Chat
- Model Parameters on the Context
- Build Explicitly
- Upgrading from 1.x
Files
SKILL.mdcore8,782 bytesSKILL.mdcore8,782 bytesSKILL.mdcore8,782 bytesSKILL.mdcore8,782 bytes
Read SKILL.md
# CrestApps.Core Context Builders
Two handler pipelines prepare every AI request:
| Level | Builder | Handler | Produces |
|---|---|---|---|
| Completion | `IAICompletionContextBuilder.BuildAsync(resource, configure, cancellationToken)` | `IAICompletionContextBuilderHandler` | `AICompletionContext` (deployments, system message, tools, agents, model parameters, data source) |
| Orchestration | `IOrchestrationContextBuilder.BuildAsync(resource, configure, cancellationToken)` | `IOrchestrationContextBuilderHandler` | `OrchestrationContext` (user message, history, documents, `SystemMessageBuilder`, completion context) |
## Guidelines
- Use a completion handler for anything every completion of a resource needs, including non-orchestrated calls and sub-agents. Use an orchestration handler for work that only belongs to orchestrated chat.
- Both builders run `BuildingAsync` on every handler, then the caller's `configure` delegate, then `BuiltAsync` on every handler.
- Handlers run in reverse registration order: the last registered runs first. Register an override after the handler whose values it replaces.View the complete source on GitHubcrestapps-core-copilot-orchestrator
When your agent uses it
Skill for the GitHub Copilot orchestrator in CrestApps.Core 2.0, a named IOrchestrator ("copilot") built on the GitHub Copilot SDK. Covers AddCopilotOrchestrator and AddCoreAICopilotOrchestrator registration, the automatic Copilot CLI acquisition with its shared cache and npm registry MSBuild properties, binding CopilotOptions yourself, the NotConfigured, GitHubOAuth and ApiKey (BYOK) authentication modes and what each requires, implementing ICopilotCredentialStore or using JsonFileCopilotCredentialStore, GitHubOAuthService authorization, callback state validation, token refresh and model listing, CopilotSessionMetadata model, permission and reasoning-effort overrides, how tools reach the SDK, and its limits around MCP tools, deployments and usage metering. Use it when running profiles on a Copilot subscription or an OpenAI-compatible BYOK endpoint through Copilot, or when Copilot reports it is not configured.
What it loads into context
Frontmatter
234 tokensAlways available to the agent
SKILL.md
2,060 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Registration
- Authentication Modes
- Credential Store
- OAuth Flow
- Session Metadata
- How a Turn Runs
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore8,858 bytes
Read SKILL.md
# CrestApps.Core Copilot Orchestrator
`CrestApps.Core.AI.Copilot` adds `CopilotOrchestrator`, an `IOrchestrator` named `"copilot"` (title **Copilot**), which runs a turn through the GitHub Copilot SDK and its CLI instead of the default pipeline.
## Guidelines
- Choose GitHub OAuth when each user brings a Copilot subscription. Choose `ApiKey` (BYOK) for one shared OpenAI-compatible, Azure or Anthropic endpoint.
- Treat `NotConfigured` as intentionally disabled; editors should show a warning instead of Copilot fields while it is selected.
- Bind `CopilotOptions` yourself; the package reads no configuration section.
- GitHub OAuth needs an `ICopilotCredentialStore`. BYOK does not.
- Copilot does not use AI connections, deployments, deployment capabilities or deployment model parameters, and its SDK-managed requests are not recorded by usage metering.
## Registration
View the complete source on GitHubcrestapps-core-custom-tools
When your agent uses it
Skill for code-defined AI tools in CrestApps.Core 2.0. Covers implementing AIFunction tools with a JSON schema, registering them with AddCoreAITool and the AIToolBuilder (WithTitle, WithDescription, WithCategory, WithPurpose, WithDependency, Selectable, Hidden), system versus selectable versus hidden tools, AIToolPurposes values, tool dependencies, returning errors instead of throwing, rich MCP results with IAIToolContentProvider, custom IToolRegistryProvider sources and ToolRegistryEntry, tool authorization where the AI Profile is the boundary for sessions and IAIToolAccessEvaluator re-checks Chat Interaction tools, IUserAccessor for the caller, and how tools relate to tool instances, agents and MCP server exposure. Use it when giving the model a new callable function, controlling which tools a profile or user can reach, or troubleshooting tools that never reach the model.
What it loads into context
Frontmatter
213 tokensAlways available to the agent
SKILL.md
2,250 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Registration
- Tool Example
- Dependencies
- Rich Results for MCP Clients
- Custom Registry Provider
- Tool Authorization
- MCP Server Exposure
- Upgrading from 1.x
Files
SKILL.mdcore10,632 bytes
Read SKILL.md
# CrestApps.Core Custom Tools
A code-defined tool is a Microsoft.Extensions.AI `AIFunction` registered under a name. The orchestrator adds it to requests through the tool registry; the model supplies all its arguments. Use tool instances (`crestapps-core-tool-instances`) when end users configure the tool, and agents (`crestapps-core-ai-agents`) when the callable thing is a whole profile.
## Guidelines
- Inherit from `AIFunction` and override `Name`, `Description`, `JsonSchema` and `InvokeCoreAsync`.
- Register with `AddCoreAITool<TTool>(name)`. Tools are singletons, also registered as keyed `AITool` services under the name.
- A tool is a **system** tool by default (hidden from pickers, added by the orchestrator by purpose or context). Call `.Selectable()` for tools users attach to profiles, and `.Hidden()` for helper tools only explicitly configured profiles or agents may use; hidden tools stay out of picker and shared MCP listings.
- Catch failures and return a descriptive result the model can act on. Never return `null`.
- Purpose values are snake case strings (`content_generation`, not `ContentGeneration`); always use the `AIToolPurposes` constants.
- Resolve scoped services from `AIFunctionArguments.Services`, not from the constructor (the tool is a singleton).
- The deployment must declare `toolCalling`, or capability enforcement removes every tool from the request.
View the complete source on GitHubcrestapps-core-data-sources
When your agent uses it
Skill for CrestApps.Core 2.0 AI data sources and search-backed RAG in any ASP.NET Core host. Covers the AIDataSource source and knowledge-base model, the SearchIndexProfile, Elasticsearch, AzureAISearch, PostgreSQL, Web and File source types, AddAIDataSources and AddCoreAIDataSourceRag, the asynchronous synchronization queue and IAIDataSourceChangeNotifier, custom IAIDataSourceSourceHandler implementations, typed knowledge columns contentType, rootId, parentId and page, OData filters and IODataFilterTranslator, AIDataSourceRagMetadata including ObjectTypes, the data source search tool instance source with Chunk and Hierarchical retrieval and ContentTypes, figure citations, and upgrading from the Ingested source type.
What it loads into context
Frontmatter
188 tokensAlways available to the agent
SKILL.md
2,349 tokensWhen the skill is activated
Reference documents
1,236 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Source Types
- Registration
- Synchronization
- Custom Sources
- Typed Knowledge Columns
- Retrieval Settings
- Data Source Search Tool Instances
- Figures in Answers
- Upgrading from 1.x
Files
SKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesreferences/custom-source-examples.mddoc5,956 bytes
Read SKILL.md
# CrestApps.Core Data Sources
An `AIDataSource` connects a **source** (where raw documents come from) to a **knowledge base** (a vector index profile holding chunked, embedded rows). AI profiles and chat interactions attach a data source for preemptive RAG and the `search_data_sources` tool, and tool instances can expose several data sources side by side.
Pick a backend skill for the vector store: `crestapps-core-elasticsearch`, `crestapps-core-azure-ai-search` or `crestapps-core-postgresql`. For uploads see `crestapps-core-document-processing`. For the record types that fill `Web` and `File` data sources see `crestapps-core-web-crawlers` and `crestapps-core-file-sources`.
## Source Types
`AIDataSourceSourceTypes` (namespace `CrestApps.Core.AI.Models`):
| Constant | Reads | Kept in step by |
|---|---|---|
| `SearchIndexProfile` | a CrestApps-managed source index profile | automatic, when writes go through `ISearchDocumentManager` |
| `Elasticsearch` | an external Elasticsearch index with per-data-source credentials | `IAIDataSourceChangeNotifier` |View the complete source on GitHubcrestapps-core-data-storage
When your agent uses it
Skill for choosing and registering CrestApps.Core 2.0 persistence. Covers picking Entity Framework Core (CrestApps.Core.Data.EntityCore) or YesSql (CrestApps.Core.Data.YesSql), registering the backing data store on the root builder, per-feature AddEntityCoreStores and AddYesSqlStores calls on the AI suite, personas, chat interactions, document processing, memory, tool instances, A2A, MCP and indexing builders, the service-collection store calls for web crawlers, file sources, knowledge objects and ingestion item state, what the null fallback stores mean, commit boundaries through IStoreCommitter, how configuration and database deployments merge, and writing a custom backend. Use it when a host needs durable profiles, sessions, documents, connections, deployments, or crawler and file-source state.
What it loads into context
Frontmatter
197 tokensAlways available to the agent
SKILL.md
2,178 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Entity Framework Core
- YesSql
- What Each Store Call Registers
- Configuration and Database Records
- Custom Backend
- Upgrading from 1.x
Files
SKILL.mdcore9,326 bytesSKILL.mdcore9,326 bytesSKILL.mdcore9,326 bytesSKILL.mdcore9,326 bytesSKILL.mdcore9,326 bytesSKILL.mdcore9,326 bytesSKILL.mdcore9,326 bytesSKILL.mdcore9,326 bytes
Read SKILL.md
# CrestApps.Core Data Storage
You are a CrestApps.Core expert. Help the host choose a backend and register exactly the stores each enabled feature needs.
## Guidelines
- Choose Entity Framework Core when the host already uses EF Core or wants any EF relational provider. Choose YesSql when the host wants a document store with collections and map indexes (as Orchard Core does).
- Register the backing store once on the root builder: `.AddEntityCoreSqliteDataStore(...)` / `.AddEntityCoreDataStore(...)`, or `.AddYesSqlDataStore(...)`. The per-feature `Add*Stores()` calls only select stores; they never create the `DbContext` or `IStore`.
- Call the store method on every feature builder you enable. One call does not cover other features.
- Without a store package, connections and deployments come only from configuration and `ISearchIndexProfileStore` falls back to a null store, but nothing registers `IAIProfileStore`, the chat session stores, or the `ChatInteraction` catalog. Register a store before resolving `IAIProfileManager`, chat sessions, or Chat Interactions.
- Every write path needs a commit boundary (`IStoreCommitter`); see `crestapps-core-foundations`.
- Create the schema before serving requests: `InitializeEntityCoreSchemaAsync()` for EF Core, or the `Create*IndexSchemaAsync` extensions for YesSql.
## Entity Framework CoreView the complete source on GitHubcrestapps-core-document-agents
When your agent uses it
Skill for the CrestApps.Core 2.0 document system agents that create, edit, preview and export files inside a conversation. Covers the Presentation Agent registered by AddOpenXml, the Word Agent registered by AddWord, the PDF Agent registered by AddPdf, and the Tabular Data Agent preview_tabular_data tool, their per-conversation workspaces in IDocumentFileStore, SVG previews returned as fig and doc markers with the download endpoint they need, PresentationAgentOptions, WordAgentOptions, PdfAgentOptions and the preview and composition options, PDF signing with AddPdfSigning and IPdfSigningCertificateProvider, IConversationWorkspaceCleanupHandler, generated file writers with AddGeneratedFileWriter and the requestable flag, and exposure of these agents through A2A and MCP.
What it loads into context
Frontmatter
190 tokensAlways available to the agent
SKILL.md
2,489 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Registration
- Workspaces
- Previews and Downloads
- Options
- PDF Signing
- Cleaning Up Your Own Conversation State
- Generated File Writers
- Exposure Outside the Chat
- Upgrading from 1.x
Files
SKILL.mdcore11,382 bytes
Read SKILL.md
# CrestApps.Core Document Agents
Four code-defined **system agents** work on files for the primary model. Each is always available to orchestration, hidden from AI Profile and Chat Interaction agent pickers, published through an A2A host, and runs its own hidden tools. The primary model delegates every request that produces or changes that kind of file, and every follow-up ("make the title blue"), to the agent. Base document processing is in `crestapps-core-document-processing`.
| Agent | Name | Registered by | Package |
|---|---|---|---|
| Tabular Data Agent | `tabular-data-agent` | `AddDocumentProcessing()` | `CrestApps.Core.AI.Documents` |
| Presentation Agent | `presentation-agent` | `AddOpenXml()` | `CrestApps.Core.AI.Documents.OpenXml` (agent code in `CrestApps.Core.AI.Documents`) |
| Word Agent | `word-agent` | `AddWord()` | `CrestApps.Core.AI.Documents.Word` |
| PDF Agent | `pdf-agent` | `AddPdf()` on the document-processing builder | `CrestApps.Core.AI.Documents.Pdf` |
## Registration
```csharpView the complete source on GitHubcrestapps-core-document-processing
When your agent uses it
Skill for CrestApps.Core 2.0 document processing and the separate ingestion path. Covers AddDocumentProcessing with OpenXml, Pdf, Word and reference downloads, AddCoreAIDocumentIngestion with AddPlainTextReader, AddFigureProcessing, AddFigureBackfill, AddPdf and AddDocumentIntelligence, the IAIDocumentIngestionPipeline and AIDocumentIngestionProcessor extension points, custom IngestionDocumentReader registration, PDF layout analysis with PdfLayoutOptions, figure captions, salience and vision transcription, upload limits through InteractionDocumentOptions and DocumentsMetadata, the document and figure download endpoints, the built-in document and tabular tools, and upgrading 1.x hosts whose types moved to CrestApps.Core.AI.Ingestion.
What it loads into context
Frontmatter
182 tokensAlways available to the agent
SKILL.md
2,838 tokensWhen the skill is activated
Reference documents
2,332 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Two packages, two jobs
- Chat Document Processing
- Ingestion Without Chat
- Custom Readers and Processors
- Upload Limits
- Storage
- Built-in Tools
- Upgrading from 1.x
Files
SKILL.mdcore12,690 bytesSKILL.mdcore12,690 bytesSKILL.mdcore12,690 bytesreferences/ingestion-pipeline.mddoc10,934 bytes
Read SKILL.md
# CrestApps.Core Document Processing
Use this skill when a host lets users upload documents into chat sessions, chat interactions or AI profiles, or when it needs to read files into an AI knowledge base without the chat stack. For the Presentation, Word and PDF agents see `crestapps-core-document-agents`. For scheduled folder and file-server intake see `crestapps-core-file-sources`.
## Two packages, two jobs
| Package | Holds | Register with |
|---|---|---|
| `CrestApps.Core.AI.Ingestion` | readers, the processor pipeline, `IDocumentFileStore`, `IKnowledgeIngestionService` | `AddCoreAIDocumentIngestion(...)` |
| `CrestApps.Core.AI.Ingestion.Pdf` | the PdfPig PDF reader and `PdfLayoutOptions` | `AddPdf()` on the ingestion builder |
| `CrestApps.Core.AI.Documents` | uploads, tabular workspaces, generated files, the chat tools, the Tabular Data Agent | `AddDocumentProcessing(...)` / `AddCoreAIDocumentProcessing()` |
| `CrestApps.Core.AI.Documents.OpenXml` | `.docx`, `.xlsx`, `.pptx`, `.potx` reader, Office writers, Presentation Agent | `AddOpenXml()` |
| `CrestApps.Core.AI.Documents.Pdf` | PDF reader plus PDF writer and PDF Agent | `AddPdf()` on the document-processing builder |
| `CrestApps.Core.AI.Documents.Word` | Word Agent | `AddWord()` |View the complete source on GitHubcrestapps-core-elasticsearch
When your agent uses it
Skill for using Elasticsearch as the CrestApps.Core indexing and vector backend. Covers CrestApps.Core.Elasticsearch and CrestApps.Core.AI.Elasticsearch, AddElasticsearch on the indexing builder with AddAIDocuments, AddAIDataSources and AddAIMemory, AddCoreElasticsearchServices and the lower-level source registrations, ElasticsearchConnectionOptions and authentication types, AddElasticsearchODataFilterTranslator, the filters prefix and typed knowledge columns, in-place schema upgrades through TryAddFieldsAsync, external Elasticsearch source mappings with IAIDataSourceChangeNotifier, and troubleshooting connection, certificate and filter problems.
What it loads into context
Frontmatter
154 tokensAlways available to the agent
SKILL.md
1,335 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Registration
- Configuration
- Filters and Typed Columns
- External Elasticsearch Sources
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore5,940 bytesSKILL.mdcore5,940 bytesSKILL.mdcore5,940 bytesSKILL.mdcore5,940 bytesSKILL.mdcore5,940 bytesSKILL.mdcore5,940 bytes
Read SKILL.md
# CrestApps.Core Elasticsearch
Use Elasticsearch as the knowledge-base backend for AI documents, AI data sources and AI memory. For the data source model itself see `crestapps-core-data-sources`.
## Registration
```csharp
builder.Services.AddCrestAppsCore(crestApps => crestApps
.AddAISuite(ai => ai.AddOpenAI())
.AddIndexingServices(indexing => indexing
.AddYesSqlStores()
.AddElasticsearch(
builder.Configuration.GetSection("CrestApps:Elasticsearch"),
elasticsearch => elasticsearchView the complete source on GitHubcrestapps-core-entitycore-stores
When your agent uses it
Skill for the CrestApps.Core.Data.EntityCore persistence backend in CrestApps.Core 2.0. Covers AddEntityCoreSqliteDataStore and AddEntityCoreDataStore with any EF Core provider, EntityCoreDataStoreOptions (TablePrefix, EnforceNamedSourceUniqueness), CrestAppsEntityDbContext and its tables, EntityCoreStoreCommitter, per-feature AddEntityCoreStores on every feature builder including personas and tool instances, the service-collection store methods for web crawlers, file sources, knowledge objects and ingestion item state, generic document catalogs for custom models, binding sources, InitializeEntityCoreSchemaAsync, and extending the model with ICrestAppsModelConfigurer. Use it when a host persists CrestApps.Core data with Entity Framework Core or troubleshoots EF Core stores.
What it loads into context
Frontmatter
196 tokensAlways available to the agent
SKILL.md
2,178 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Rules
- Registration
- Service-Collection Methods
- Tables
- Custom Models
- Extend the Model
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore9,585 bytesSKILL.mdcore9,585 bytesSKILL.mdcore9,585 bytesSKILL.mdcore9,585 bytesSKILL.mdcore9,585 bytesSKILL.mdcore9,585 bytesSKILL.mdcore9,585 bytes
Read SKILL.md
# CrestApps.Core EntityCore Stores
You are a CrestApps.Core expert. Generate accurate Entity Framework Core persistence code with `CrestApps.Core.Data.EntityCore`.
## Rules
- Register the data store on the root builder with `.AddEntityCoreSqliteDataStore(connectionString, tablePrefix: "CA_")` or `.AddEntityCoreDataStore(options => options.UseNpgsql(...), store => store.TablePrefix = "App_")`. They map to `AddCoreEntityCoreSqliteDataStore(...)` and `AddCoreEntityCoreDataStore(...)` on `IServiceCollection` and register `CrestAppsEntityDbContext` plus scoped `EntityCoreStoreCommitter`.
- `AddEntityCoreStores()` on a feature builder selects that feature's stores. It never registers the `DbContext`.
- `EntityCoreStoreCommitter.CommitAsync()` calls `SaveChangesAsync()` only when `ChangeTracker.HasChanges()` is true. Writes that never reach a commit boundary are lost when the scope ends.
- `EntityCoreDataStoreOptions.TablePrefix` defaults to `"CA_"`. `EnforceNamedSourceUniqueness` (default `false`) adds a unique index on entity type, source and name; enable it only after removing duplicates.
- `CrestAppsEntityDbContext` is sealed. Extend the model through `ICrestAppsModelConfigurer`.
- Call `await app.Services.InitializeEntityCoreSchemaAsync()` after `Build()` when the host lets the package manage the schema. It runs `EnsureCreatedAsync()`, upgrades the pre-1.0 layout, and adds optional tables and catalog columns introduced later. Use EF Core migrations instead when the host owns its schema.
## RegistrationView the complete source on GitHubcrestapps-core-extensible-entities
When your agent uses it
Skill for storing typed extension data on CrestApps.Core extensible entities (ExtensibleEntity, CatalogItem, AIProfile, AIDeployment, ChatInteraction and others). Covers the Properties bag and JsonExtensionDataConverter, the Put, TryGet, GetOrCreate, Get, Alter, Has and Remove extension methods with their generic constraints, key naming by type name, supplying the same metadata from configuration or recipes through the Properties object (for example AIDeploymentMetadata capabilities), and configuring ExtensibleEntityJsonOptions through the options pattern or the static ExtensibleEntityExtensions.JsonSerializerOptions. Use it when attaching custom metadata to CrestApps.Core models or troubleshooting how that metadata serializes.
What it loads into context
Frontmatter
174 tokensAlways available to the agent
SKILL.md
1,460 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Methods
- Typed Metadata
- Framework Metadata Uses the Same Bag
- Configure Serialization
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore6,448 bytes
Read SKILL.md
# CrestApps.Core Extensible Entities
You are a CrestApps.Core expert. Generate code for typed metadata stored in `ExtensibleEntity.Properties`.
## Guidelines
- `ExtensibleEntity` (namespace `CrestApps.Core`) exposes `Properties`, an ordinal-ignore-case `IDictionary<string, object>`. `CatalogItem` derives from it, so every catalog model (profiles, deployments, connections, interactions, personas, data sources) carries a property bag.
- `Properties` serializes as a nested `Properties` JSON object through `JsonExtensionDataConverter`, which keeps JSON values as `JsonNode`. Do not replace it with `[JsonExtensionData]`; flattened root-level values are not read back as metadata.
- Use the extension methods in `ExtensibleEntityExtensions` instead of casting dictionary values.
- The default key is the type name (`typeof(T).Name`), so keep one metadata object per type. Use `Put(name, value)` and `Get<T>(name)` for explicit keys.
- Name metadata classes uniquely; two classes with the same name in different namespaces share a key.
## Methods
View the complete source on GitHubcrestapps-core-external-relays
When your agent uses it
Skill for implementing and managing persistent external chat relays in CrestApps.Core 2.0 using IExternalChatRelay, IExternalChatRelayManager and its ExternalChatRelayConnectionManager singleton, ExternalChatRelayContext, IExternalChatRelayEventHandler, IExternalChatRelayNotificationHandler, IExternalChatRelayNotificationBuilder and ExternalChatRelayEventTypes. Use it when bridging AI chat sessions or chat interactions to a live-agent or other external chat platform through a deferred response handler.
What it loads into context
Frontmatter
132 tokensAlways available to the agent
SKILL.md
843 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Scope
- Connect and Close a Relay
- Event and Notification Integration
- Related skills
- Upgrading from 1.x
Files
SKILL.mdcore4,074 bytes
Read SKILL.md
# CrestApps.Core External Chat Relays
## Scope
`IExternalChatRelay` is the contract for a persistent, bidirectional connection to a live-agent or other external chat platform. An implementation supplies connection, prompt, signal, disconnect, and async-disposal behavior; the transport is application-defined.
The core packages ship no `IExternalChatRelay` implementation, only the manager: `ExternalChatRelayConnectionManager` is registered by `AddCoreAIOrchestration()` as the singleton `IExternalChatRelayManager` and tracks relay instances by session ID. Its members are `GetOrCreateAsync(sessionId, context, factory, cancellationToken)`, `Get(sessionId)` and `CloseAsync(sessionId, cancellationToken)`.
## Connect and Close a Relay
Create the relay in the factory passed to the manager. The manager connects it, disposes a failed connection attempt, and disposes an extra instance if a concurrent caller won the same session ID.
```csharp
var relay = await relayManager.GetOrCreateAsync(View the complete source on GitHubcrestapps-core-file-sources
When your agent uses it
Skill for CrestApps.Core 2.0 file sources, the continuous intake path that keeps a File AI data source in step with a folder, an FTP server or an SFTP server. Covers CrestApps.Core.AI.FileSources, AddCoreFileSources with the CrestApps AI FileSources configuration section, AddCoreFileSystemConnector with AllowedRoots, AddCoreFtpIngestionConnector and AddCoreSftpIngestionConnector, FileSource records and their YesSql or Entity Framework Core stores, FileSourceMetadata per-source figure and model settings, IIngestionRunService and IFileSourceScheduler, FileSourceRunSummary, the IsComplete rule that prevents partial listings from deleting knowledge, discovery cursors and change tokens, typed knowledge objects and the knowledge figure endpoint, custom IIngestionConnector implementations, and upgrading from CrestApps.Core.AI.Indexers.
What it loads into context
Frontmatter
207 tokensAlways available to the agent
SKILL.md
2,696 tokensWhen the skill is activated
Reference documents
1,577 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Registration
- Configuration
- Creating Records in Code
- Running
- What Gets Removed
- Custom Connectors
- Upgrading from 1.x and 2.0 previews
Files
SKILL.mdcore11,450 bytesSKILL.mdcore11,450 bytesSKILL.mdcore11,450 bytesSKILL.mdcore11,450 bytesSKILL.mdcore11,450 bytesSKILL.mdcore11,450 bytesSKILL.mdcore11,450 bytesSKILL.mdcore11,450 bytesSKILL.mdcore11,450 bytesreferences/connector-examples.mddoc7,618 bytes
Read SKILL.md
# CrestApps.Core File Sources
A **File** AI data source (`AIDataSourceSourceTypes.File`) is an inert bucket with no folder, credential or field mapping. A **file source** (`FileSource` record) picks a connector, configures it, and points at the File data source it fills. Several file sources can feed one knowledge base, each on its own schedule. Web crawlers (`crestapps-core-web-crawlers`) are the same shape for websites.
```text
FileSource (FileSystem) -+
FileSource (Ftp) -+-> File AI data source -> knowledge-base index (typed objects)
FileSource (Sftp) -+
```
Each file becomes separately retrievable objects (`document`, `article`, `text`, `figure`, `chart`, `table`) with a page number and a link to its article and document. Data source concepts are in `crestapps-core-data-sources`; readers and figure processing are in `crestapps-core-document-processing`.
## Registration
View the complete source on GitHubcrestapps-core-foundations
When your agent uses it
Skill for the CrestApps.Core foundation packages (CrestApps.Core.Abstractions, CrestApps.Core, CrestApps.Core.Infrastructure, CrestApps.Core.Support). Covers the CrestAppsCoreBuilder and feature builder layering, AddCoreServices, catalogs (IReadCatalog, ICatalog, INamedCatalog, ISourceCatalog, INamedSourceCatalog), catalog managers and the AddCatalogManagers pipeline, ICatalogEntryHandler and CatalogEntryHandlerBase lifecycle handlers with validation through ValidatingContext, QueryContext paging, multi-source binding sources (INamedCatalogSource, MultiSourceNamedCatalog), IStoreCommitter commit boundaries and filters, IUserAccessor for hub-safe caller resolution, IODataValidator, and shared utilities such as UniqueId, JSOptions, RedactedSecret and DataProtectionHelper. Use it when building custom catalogs, stores, handlers, or infrastructure on CrestApps.Core.
What it loads into context
Frontmatter
207 tokensAlways available to the agent
SKILL.md
2,703 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Package Layering
- Catalogs and Managers
- Multi-Source Binding Sources
- Commit Boundaries
- Caller Identity
- OData Filters
- Utilities
- Upgrading from 1.x
Files
SKILL.mdcore12,112 bytesSKILL.mdcore12,112 bytesSKILL.mdcore12,112 bytesSKILL.mdcore12,112 bytes
Read SKILL.md
# CrestApps.Core Foundations
You are a CrestApps.Core expert. Build on the framework contracts rather than on a specific store or provider.
## Package Layering
| Layer | Package | Contents |
|---|---|---|
| Abstractions | `CrestApps.Core.Abstractions` | `ExtensibleEntity`, `CatalogItem`, `SourceCatalogEntry`, `INameAwareModel`, `ISourceAwareModel`, `IDisplayTextAwareModel`, catalog and manager interfaces, handler contexts, `QueryContext`, `PageResult<T>`, `IStoreCommitter`, `IUserAccessor`, `UniqueId`, the feature builder classes |
| Core | `CrestApps.Core` | `AddCrestAppsCore(...)`, `AddCoreServices()`, `AddCatalogManagers()`, catalog managers, `CatalogEntryHandlerBase<T>`, multi-source catalogs, store-committer filters, `ODataFilterValidator`, `UserAccessor`, `JSOptions`, `DataProtectionHelper` |
| Infrastructure | `CrestApps.Core.Infrastructure.Abstractions`, `CrestApps.Core.Infrastructure` | indexing contracts (`ISearchIndexManager`, `IIndexProfileHandler`), `DataSourceConstants`, `DocumentIndexConstants`, `RedactedSecret`, `DictionaryExtensions` |
| Utilities | `CrestApps.Core.Support` | string, enum, date and JSON helpers |
`AddCrestAppsCore(...)` creates the root `CrestAppsCoreBuilder` and registers `ExtensibleEntityJsonOptions` plus the hosted service that applies them. `AddIndexingServices(...)` on the root creates `CrestAppsIndexingBuilder`. `AddAISuite(...)` creates `CrestAppsAISuiteBuilder`, which hosts the feature builders (`CrestAppsChatInteractionsBuilder`, `CrestAppsDocumentProcessingBuilder`, `CrestAppsDocumentIngestionBuilder`, `CrestAppsAIMemoryBuilder`, `CrestAppsAIPersonasBuilder`, `CrestAppsAIToolInstancesBuilder`, `CrestAppsA2AClientBuilder`, `CrestAppsMcpClientBuilder`, `CrestAppsMcpServerBuilder`). Every builder method maps to an `IServiceCollection` extension such as `AddCoreAIServices()`, so a host can still call the lower-level methods directly.View the complete source on GitHubcrestapps-core-mcp
When your agent uses it
Skill for CrestApps.Core Model Context Protocol support in any ASP.NET Core host. Covers AddMcpClient and AddCoreAIMcpClient with SSE and StdIO transports, McpConnection stores and custom IMcpClientTransportProvider, AddMcpServer with the MCP C# SDK, WithCrestAppsHandlers and MapMcp, McpServerOptions authentication, opt-in tool exposure with ExposeAllTools and Tools, agents as MCP tools with ExposeAllAgents and Agents, rich tool results through McpToolResultMapper, IAIToolContentProvider and IMcpToolContentProvider, catalog prompts and resources, custom resource types with AddCoreAIMcpResourceType and McpResourceTypeHandlerBase, knowledge figure resources, and upgrading 1.x MCP hosts.
What it loads into context
Frontmatter
191 tokensAlways available to the agent
SKILL.md
2,167 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Client
- Server
- What a Client May Call
- Tool Results
- Custom Resource Types
- Upgrading from 1.x
Files
SKILL.mdcore9,272 bytes
Read SKILL.md
# CrestApps.Core MCP
`CrestApps.Core.AI.Mcp` provides both sides of MCP: a client that turns remote MCP servers into orchestrator tools, and server handlers that expose CrestApps tools, tool instances, agents, prompts and resources through the official MCP C# SDK. FTP and SFTP resource types are covered in `crestapps-core-mcp-file-resources`.
## Client
```csharp
builder.Services.AddCrestAppsCore(crestApps => crestApps
.AddAISuite(ai => ai
.AddOpenAI()
.AddMcpClient(mcpClient => mcpClient
.AddEntityCoreStores())) // or .AddYesSqlStores(); registers the McpConnection catalog
.AddEntityCoreSqliteDataStore("Data Source=app.db"));
```View the complete source on GitHubcrestapps-core-mcp-file-resources
When your agent uses it
Skill for exposing FTP, FTPS and SFTP files as CrestApps.Core MCP resource types with the consolidated CrestApps.Core.AI.Ftp and CrestApps.Core.AI.Sftp packages. Covers AddFtpResources, AddSftpResources, AddCoreAIFtpMcpResources and AddCoreAISftpMcpResources, FtpResourceTypeHandler and SftpResourceTypeHandler, the path URI variable and its sanitization, FtpConnectionMetadata and SftpConnectionMetadata with Data Protection purposes, the matching file source ingestion connectors in the same packages, and upgrading from CrestApps.Core.AI.Mcp.Ftp and CrestApps.Core.AI.Mcp.Sftp.
What it loads into context
Frontmatter
173 tokensAlways available to the agent
SKILL.md
1,350 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Register Both Resource Types
- Handlers
- Attach FTP Metadata
- Attach SFTP Metadata
- Resource Records
- Upgrading from 1.x
Files
SKILL.mdcore5,499 bytesSKILL.mdcore5,499 bytesSKILL.mdcore5,499 bytesSKILL.mdcore5,499 bytes
Read SKILL.md
# CrestApps.Core MCP File Resources
Expose files on an FTP, FTPS or SFTP server to MCP clients as resources. In 2.0 each protocol lives in one package that also carries the file source ingestion connector for the same protocol (see `crestapps-core-file-sources`). Registering one side does not register the other.
| Package | MCP resource registration | Ingestion connector registration |
|---|---|---|
| `CrestApps.Core.AI.Ftp` | `AddFtpResources()` / `AddCoreAIFtpMcpResources()` | `AddCoreFtpIngestionConnector()` |
| `CrestApps.Core.AI.Sftp` | `AddSftpResources()` / `AddCoreAISftpMcpResources()` | `AddCoreSftpIngestionConnector()` |
## Register Both Resource Types
```csharp
using CrestApps.Core.AI.Ftp;
using CrestApps.Core.AI.Mcp;View the complete source on GitHubcrestapps-core-ollama
When your agent uses it
Skill for running local and self-hosted Ollama models in CrestApps.Core 2.0. Covers AddOllama and AddCoreAIOllama registration, connections with the Ollama client name and a required Endpoint, configured chat and embedding deployments that declare model capabilities through Features instead of the removed Purpose or Type, declaring toolCalling only for models that support tools, deployment slots resolved with ResolveSlotAsync, Docker and model pulling, unsupported image, speech and realtime clients, and upgrading from 1.x. Use it for local development, offline or air-gapped hosts, and privacy-sensitive workloads, or when troubleshooting missing endpoints, skipped deployments, tool calls that never happen, or slow local responses.
What it loads into context
Frontmatter
177 tokensAlways available to the agent
SKILL.md
1,657 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Registration
- Configuration
- Running Ollama
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore6,785 bytesSKILL.mdcore6,785 bytes
Read SKILL.md
# CrestApps.Core Ollama
The `CrestApps.Core.AI.Ollama` package uses `OllamaApiClient` (OllamaSharp) to talk to a local or self-hosted Ollama server. No API key is involved; data stays on your infrastructure.
## Guidelines
- Use Ollama for local development, offline work, and privacy-sensitive scenarios.
- The connection's `Endpoint` is required. There is no built-in default; a connection without one fails when a client is created.
- Capabilities are model-dependent. Declare `toolCalling` only for models that support tools (for example `llama3.1`, `llama3.2`, `qwen2.5`, `mistral`), and `imageInput` only for multimodal models such as `llava`.
- Only chat and embeddings are supported. Image generation, speech-to-text, text-to-speech and realtime are not; put those on another provider and resolve them through their slots.
- Pull a model before configuring a deployment that names it.
## Registration
View the complete source on GitHubcrestapps-core-openai
When your agent uses it
Skill for using OpenAI and OpenAI-compatible endpoints in CrestApps.Core 2.0. Covers AddOpenAI and AddCoreAIOpenAI registration, connections under CrestApps AI Connections with ApiKey, Endpoint and the ChatApi setting (Auto, ChatCompletions, Responses) that sends reasoning requests with tools to the Responses API, configured deployments that declare model capabilities through Features and Parameters instead of the removed Purpose or Type, connection-declared deployment names, deployment slots resolved with ResolveSlotAsync, text-to-speech voices and raw PCM output for cascaded realtime, gpt-realtime speech-to-speech deployments with OpenAIRealtimeVoices, and upgrading from 1.x. Use it when wiring OpenAI, OpenRouter, xAI or another OpenAI-compatible server into a CrestApps.Core host, or when troubleshooting skipped deployments, stripped tools, or reasoning-effort errors.
What it loads into context
Frontmatter
213 tokensAlways available to the agent
SKILL.md
3,450 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Registration
- Connection and Deployments
- Slots and Site Defaults
- Chat API and Reasoning Models
- Speech and Realtime
- OpenAI-Compatible Servers
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore14,112 bytesSKILL.mdcore14,112 bytes
Read SKILL.md
# CrestApps.Core OpenAI
The `CrestApps.Core.AI.OpenAI` package connects CrestApps.Core to `api.openai.com` and to any server that speaks the OpenAI API. The connection holds credentials and the endpoint; each deployment names a model and declares what that model can do.
## Guidelines
- Register only the providers the host uses. OpenAI is the simplest first provider because it needs only an API key.
- Put the API key, endpoint and `ChatApi` on the connection. Put the model name and its capabilities on the deployment.
- Every configured deployment must declare its model capabilities (`Features`). A deployment entry with no features and no legacy `Purpose`/`Type` is skipped at startup with the warning "declares no model capabilities".
- Pick deployments through slots (`AIDeploymentSlotNames`) and `IAIDeploymentManager.ResolveSlotAsync(...)`. Never hard-code a provider client in business code.
- Use `crestapps-core-ai-runtime` for the provider-agnostic runtime, `crestapps-core-chat` for completion loops, and `crestapps-core-realtime-voice` for voice sessions.
## Registration
View the complete source on GitHubcrestapps-core-orchestration
When your agent uses it
Skill for the default CrestApps.Core 2.0 orchestration pipeline. Covers AddCoreAIOrchestration and AddAISuite registration, IOrchestrator ExecuteStreamingAsync, IOrchestratorResolver and OrchestratorOptions DefaultOrchestratorName, building an OrchestrationContext with IOrchestrationContextBuilder, the tool registry and its providers (system, profile, agent and tool instance tools), progressive tool scoping with DefaultOrchestratorOptions ScopingThreshold and PlanningThreshold, the utility-deployment planning call with its model parameters, chat-slot deployment resolution, preemptive RAG with DefaultOrchestratorSettings, built-in system tools, registering a custom orchestrator with AddOrchestrator, error handling, and usage labels for planning. Use it when running orchestrated chat in a host, writing a custom orchestrator, or tuning how many tools reach the model.
What it loads into context
Frontmatter
215 tokensAlways available to the agent
SKILL.md
2,136 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Registration
- Run an Orchestrated Turn
- Key Services
- Progressive Tool Scoping
- Custom Orchestrator
- Errors
- Upgrading from 1.x
Files
SKILL.mdcore9,915 bytes
Read SKILL.md
# CrestApps.Core Orchestration
The orchestrator is the agentic loop: it builds context from the profile, scopes tools, runs preemptive retrieval, calls the model with function invocation, and streams the answer. `DefaultOrchestrator` (name `"default"`) is registered by `AddCoreAIOrchestration()`; Claude (`"anthropic"`) and Copilot (`"copilot"`) are alternatives.
## Guidelines
- Register orchestration through `AddAISuite(...)` or `AddCoreAIOrchestration()`.
- Build the context with `IOrchestrationContextBuilder.BuildAsync(resource, configure, cancellationToken)` instead of filling `OrchestrationContext` by hand; the handlers add the system message, tools, documents, RAG and security preamble.
- Resolve orchestrators with `IOrchestratorResolver.Resolve(name)`. An empty or unknown name falls back to `OrchestratorOptions.DefaultOrchestratorName`.
- Let the orchestrator scope large tool sets; do not hand-pick tools per request.
- The chat deployment is resolved through the `chat` slot and planning runs on the utility deployment (falling back to chat). See `crestapps-core-ai-runtime`.
## Registration
View the complete source on GitHubcrestapps-core-overview
When your agent uses it
Entry point for CrestApps.Core 2.0 in any ASP.NET Core or generic .NET host. Covers the full NuGet package map, the AddCrestAppsCore and AddAISuite builder chain, the CrestApps AI Connections and Deployments configuration layout, declaring deployment model capabilities (Features) and resolving deployments through slots with ResolveSlotAsync and AIDeploymentSlotNames, choosing a storage backend and sample host, the cross-cutting 2.0 breaking changes (AIDeploymentPurpose removal, Indexers renamed to FileSources, the new Ingestion package, consolidated FTP and SFTP packages, Vite-built chat assets), and an index of every crestapps-core skill. Use this skill first when a request mentions CrestApps.Core packages, getting started, which package or skill to use, or upgrading a CrestApps.Core 1.x host.
What it loads into context
Frontmatter
208 tokensAlways available to the agent
SKILL.md
4,111 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Smallest Useful Setup
- Configuration with Capabilities
- Resolve a Deployment by Slot
- Package Map
- Common Builder Calls
- Skill Index
- Upgrading from 1.x
Files
SKILL.mdcore16,331 bytesSKILL.mdcore16,331 bytes
Read SKILL.md
# CrestApps.Core Overview
You are a CrestApps.Core expert. Start here to pick packages, compose the builder chain, configure connections and deployments, and route the rest of the task to the right `crestapps-core-*` skill.
## Guidelines
- Compose everything through `services.AddCrestAppsCore(crestApps => crestApps.AddAISuite(ai => ...))`. `AddAISuite(...)` always registers `AddCoreServices()`, `AddCoreAIServices()` and `AddCoreAIOrchestration()`; every feature, provider and store is an opt-in call on a builder.
- Reference the smallest package set the feature list needs. Install the packages in the web or startup project.
- Keep provider credentials in `CrestApps:AI:Connections` and model choices in `CrestApps:AI:Deployments`.
- A deployment declares what its model can do (**capabilities**, the `Features` list). Code asks for a **slot** (`chat`, `utility`, `embedding`, `image`, `vision`, `speechToText`, `textToSpeech`, `realtime`) and lets `IAIDeploymentManager.ResolveSlotAsync(...)` pick the deployment. Never select deployments by a purpose or type; those APIs are gone in 2.0.
- Without a store package, connections and deployments come only from configuration, and nothing stores AI Profiles, chat sessions or Chat Interactions. Add `CrestApps.Core.Data.EntityCore` or `CrestApps.Core.Data.YesSql` (see `crestapps-core-data-storage`) before using those features.
- Use the MVC sample host (`CrestApps.Core.Mvc.Web`) as the broadest reference and the Blazor host (`CrestApps.Core.Blazor.Web`) for an Entity Framework Core composition.
## Smallest Useful SetupView the complete source on GitHubcrestapps-core-postgresql
When your agent uses it
Skill for using PostgreSQL with pgvector as the CrestApps.Core indexing and vector backend. Covers CrestApps.Core.PostgreSQL and CrestApps.Core.AI.PostgreSQL, AddPostgreSQL on the indexing builder with AddAIDocuments, AddAIDataSources and AddAIMemory, AddCorePostgreSQLServices and the lower-level source registrations, PostgreSQLConnectionOptions and IndexPrefix, the vector extension, typed knowledge columns and in-place schema upgrades through TryAddFieldsAsync, external PostgreSQL table sources with IAIDataSourceChangeNotifier, the Aspire AppHost and Docker setup, and troubleshooting.
What it loads into context
Frontmatter
158 tokensAlways available to the agent
SKILL.md
1,139 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Registration
- Configuration
- Typed Columns
- External PostgreSQL Sources
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore4,745 bytesSKILL.mdcore4,745 bytesSKILL.mdcore4,745 bytesSKILL.mdcore4,745 bytes
Read SKILL.md
# CrestApps.Core PostgreSQL
Use PostgreSQL with pgvector as a lightweight, self-hosted knowledge-base backend for AI documents, AI data sources and AI memory. For the data source model see `crestapps-core-data-sources`.
## Registration
```csharp
builder.Services.AddCrestAppsCore(crestApps => crestApps
.AddAISuite(ai => ai.AddOpenAI())
.AddIndexingServices(indexing => indexing
.AddYesSqlStores()
.AddPostgreSQL(
builder.Configuration.GetSection("CrestApps:PostgreSQL"),
postgreSQL => postgreSQLView the complete source on GitHubcrestapps-core-prompt-security
When your agent uses it
Skill for the CrestApps.Core 2.0 prompt-security layer that hardens AI Profile chat. Covers input validation with IPromptSecurityService and weighted IPromptSecurityRule scoring, custom rules, PromptSecurityOptions guards and thresholds, the security preamble and input delimiters including EnableChatInteractionInputDelimiters, output filtering with IOutputSecurityFilter, audit logging, multi-tier anonymous message and session-start rate limits with ChatRateLimitTier, AIChatRateLimitingOptions partitions keyed by user and network address, PromptSecurityProfileSettings per-profile throttles, the rate-limited slow-down message and GetRateLimitedMessage, visitor identity cookies and AllowCrossSiteEmbedding, IUploadedFileScanner, and how tool authorization relates (the profile boundary and IAIToolAccessEvaluator for Chat Interactions). Use it when tuning chat abuse protection, adding detection rules, embedding a chat on another site, or explaining why a prompt was blocked or throttled.
What it loads into context
Frontmatter
225 tokensAlways available to the agent
SKILL.md
2,513 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Configure Site Policy
- Rate-Limit Partitions
- Per-Profile Throttles
- Add a Custom Rule
- Input and Output Enforcement
- Uploads
- Tool Authorization
- Choose the Right Extension Point
- Upgrading from 1.x
Files
SKILL.mdcore11,278 bytes
Read SKILL.md
# CrestApps.Core Prompt Security
A local, deterministic, regex-based layer for **AI Profile** chat: input validation, a security preamble and input delimiters, output filtering, rate limiting and audit logging. It is defense in depth, never a replacement for tool authorization.
## Guidelines
- `AddAISuite(...)` (through `AddCoreAIOrchestration()`) registers the layer: 26 built-in rules, the scoring engine, `IPromptSecurityService`, `IOutputSecurityFilter`, `IAIChatSecurityAuditService`, `IChatRateLimiter`, `IChatSessionStartRateLimiter` and `SecurityPromptOrchestrationHandler`. There is no `AddPromptSecurity(...)` method.
- `PromptSecurityOptions` is not bound from configuration by the framework. Bind it from your own section or site settings.
- Profiles can only change anti-spam throttles (`PromptSecurityProfileSettings`). Injection detection, output filtering, preamble, delimiters, length and blocking threshold are global.
- Chat Interactions get input delimiters (`EnableChatInteractionInputDelimiters`, on by default) but not the preamble or injection blocking; the operator controls their prompt, model and tools.
## Configure Site Policy
```csharpView the complete source on GitHubcrestapps-core-realtime-voice
When your agent uses it
Skill for realtime speech-to-speech voice in CrestApps.Core 2.0. Covers the realtime deployment capability and slot, Conversation chat mode with ConversationDeploymentName on profiles and chat interactions, ResolveConversationModeAsync, cascaded realtime deployments with CascadedRealtimeMetadata chaining speech-to-text, chat and text-to-speech legs, the CrestApps.Core.AI.WebRTC server-relay transport registered with AddWebRtcRealtimeTransport and its WebSocket fallback, RealtimeTransportOptions (idle timeout, max duration, semantic turn detection, knowledge grounding, STUN and TURN), coturn and Cloudflare TURN, custom IRealtimeIceServerProvider, IRealtimeOrchestrator and IRealtimeConversation, user transcription, the realtime hub methods and ReceiveRealtimeEvent contract, the CoreAIRealtime browser client, and upgrading from 1.x. Use it when adding voice to a chat surface, configuring TURN, building a cascade, or troubleshooting silent sessions, fallbacks, or missing transcripts.
What it loads into context
Frontmatter
230 tokensAlways available to the agent
SKILL.md
4,131 tokensWhen the skill is activated
Reference documents
2,278 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Choosing the Model That Carries the Conversation
- Cascaded Realtime Deployments
- Transport Registration
- Configuration
- Transcribing the User
- Client Contract
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore17,821 bytesSKILL.mdcore17,821 bytesreferences/realtime-voice-examples.mddoc11,109 bytes
Read SKILL.md
# CrestApps.Core Realtime Voice
A realtime session is a live, spoken conversation: audio in, audio out, with barge-in. It runs through the same orchestration as text chat, so the profile's or interaction's system message, persona, tools, data sources and turn persistence all apply. Audio travels over **WebRTC** (server relay) when available and falls back to **WebSocket** (PCM over SignalR) automatically.
## Guidelines
- Realtime is a model capability, not a chat mode. Declare the `realtime` feature on the deployment; it then fills the `realtime` slot. Never add `textGeneration` to a speech-to-speech-only model.
- A profile speaks when its chat mode is `Conversation` and a realtime deployment resolves. A chat interaction speaks when `ConversationDeploymentName` is set.
- Providers with a native realtime client in CrestApps.Core are OpenAI and Azure OpenAI (`gpt-realtime`). For anything else, build a cascaded realtime deployment.
- Register `AddWebRtcRealtimeTransport()` for production voice, and configure TURN so users behind strict NATs are not pushed to WebSocket after an 8-second wait.
- Add a speech-to-text deployment on the realtime deployment's provider (for example `gpt-4o-transcribe`), or the user's turns are not transcribed.
- Keep a voice profile's tool list short; every tool sits in the model's context on every turn.
- The chat hubs and UI are covered by `crestapps-core-chat-interactions`, hub options by `crestapps-core-signalr`, and provider configuration by `crestapps-core-openai` and `crestapps-core-azure-openai`.
View the complete source on GitHubcrestapps-core-resilience
When your agent uses it
Skill for retry and resilience middleware on Microsoft.Extensions.AI clients in CrestApps.Core 2.0 with the CrestApps.Core.AI.Resilience package. Covers UseDefaultResilience rate-limit retries and AIChatClientRetryOptions, fully custom Polly pipelines with UseResilience, applying them through IAIClientFactory pipeline callbacks or AsBuilder plus Build(serviceProvider) on chat, embedding, image, speech-to-text and text-to-speech builders, ordering with UseUsageLabels and UseModelParameters, AIProviderErrorHelper rate-limit and not-found detection, streaming retry limits, and which framework paths already retry. Use it when adding retries to host-created AI clients or troubleshooting HTTP 429 throttling.
What it loads into context
Frontmatter
174 tokensAlways available to the agent
SKILL.md
1,662 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Default Policy
- Chat Example
- Customizing the Default Settings
- Fully Custom Pipelines
- Other Client Types
- Streaming Notes
- When to Use Which
- Combining with Other Middleware
- Upgrading from 1.x
Files
SKILL.mdcore7,438 bytes
Read SKILL.md
# CrestApps.Core AI Resilience
Builder-based retry middleware for Microsoft.Extensions.AI clients, from the standalone `CrestApps.Core.AI.Resilience` package.
## Guidelines
- `CrestApps.Core.AI.Resilience` is a standalone package. Reference it explicitly in the consuming project.
```xml
<PackageReference Include="CrestApps.Core.AI.Resilience" Version="*" />
```
It depends on `Microsoft.Extensions.AI` and `Microsoft.Extensions.Resilience`.
- The extensions live in namespace `CrestApps.Core.AI.Resilience` and apply to the corresponding Microsoft.Extensions.AI builders: `ChatClientBuilder`, `EmbeddingGeneratorBuilder<TInput, TEmbedding>`, `ImageGeneratorBuilder`, `SpeechToTextClientBuilder`, and `TextToSpeechClientBuilder`.View the complete source on GitHubcrestapps-core-response-handlers
When your agent uses it
Skill for routing CrestApps.Core 2.0 chat messages through IChatResponseHandler implementations instead of always calling the AI. Covers the built-in AI handler (ChatResponseHandlerNames.AI), streaming and deferred results with ChatResponseHandlerResult, ChatResponseHandlerContext members, registering custom webhook or live-agent handlers, IChatResponseHandlerResolver selection by session or interaction handler name and chat mode, ResponseHandlerProfileSettings for profile-created sessions, the conversation-mode fallback to the AI handler, and how the AI handler sets AIInvocationScope before building the orchestration context. Use it when handing chats to a live agent, a webhook or an external platform, or when a custom handler is ignored.
What it loads into context
Frontmatter
174 tokensAlways available to the agent
SKILL.md
996 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Implement Response Handlers
- Deferred Webhook Example
- Handler Selection
- The Built-in AI Handler
- Related skills
- Upgrading from 1.x
Files
SKILL.mdcore4,868 bytesSKILL.mdcore4,868 bytes
Read SKILL.md
# CrestApps.Core Response Handlers
## Implement Response Handlers
Implement `IChatResponseHandler` when a message should not always use the default AI orchestration path. A handler returns either `ChatResponseHandlerResult.Streaming(...)` with an `IAsyncEnumerable<ChatResponseUpdate>` or `ChatResponseHandlerResult.Deferred()` when a later callback, background task, or relay will deliver the response.
`ChatResponseHandlerContext` exposes `Prompt`, `ConnectionId`, `SessionId`, `ChatType`, `ConversationHistory`, `Services`, `Profile`, `ChatSession`, `Interaction`, `AssistantAppearance`, and `Properties`. `Profile` and `ChatSession` are populated only for `AIChatSession`; `Interaction` is populated only for `ChatInteraction`.
## Deferred Webhook Example
```csharp
using System.Net.Http.Json;
using CrestApps.Core.AI.ResponseHandling;
View the complete source on GitHubcrestapps-core-sample-hosts
When your agent uses it
Skill for the CrestApps.Core 2.0 sample hosts under src/Startup (CrestApps.Core.Mvc.Web with YesSql, CrestApps.Core.Blazor.Web with Entity Framework Core, CrestApps.Core.Aspire.AppHost with Ollama, Redis and pgvector, the MCP and A2A sample clients, and the shared CrestApps.Core.Startup.Shared library). Covers what each host composes, how to run them, App_Data layout, which helpers are sample-only and must be rewritten in production, how to translate a sample Program.cs into a package-based host, and how to rebuild the Vite-built chat assets with npm. Use it when a request mentions the CrestApps.Core samples, running the repository locally, copying sample code, or building the front-end assets.
What it loads into context
Frontmatter
193 tokensAlways available to the agent
SKILL.md
2,152 tokensWhen the skill is activated
Reference documents
1,069 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Sample Project Map
- Run the Samples
- What Each Host Does at Startup
- Translate a Sample into Production Code
- Front-End Assets
- Upgrading from 1.x Samples
Files
SKILL.mdcore8,904 bytesSKILL.mdcore8,904 bytesSKILL.mdcore8,904 bytesSKILL.mdcore8,904 bytesSKILL.mdcore8,904 bytesreferences/building-assets.mddoc4,203 bytes
Read SKILL.md
# CrestApps.Core Sample Hosts
You are a CrestApps.Core expert. Point developers at the right sample, then separate the framework calls they should copy from the sample plumbing they should replace.
## Sample Project Map
| Project | Path | Composition | Best use |
|---|---|---|---|
| MVC reference host | `src/Startup/CrestApps.Core.Mvc.Web` | Every feature on YesSql over SQLite (`App_Data/crestapps.db`) | Broadest end-to-end reference |
| Blazor reference host | `src/Startup/CrestApps.Core.Blazor.Web` | The same features on Entity Framework Core over SQLite (`App_Data/crestapps-blazor.db`) | Blazor Server and EF Core reference |
| Aspire app host | `src/Startup/CrestApps.Core.Aspire.AppHost` | Both web hosts plus Ollama, Redis, PostgreSQL with pgvector, and both protocol clients | Composed local environment |
| MCP sample client | `src/Startup/CrestApps.Core.Mvc.Samples.McpClient` | Razor Pages client using the MCP SDK, with a server selector | Exercising a host's `/mcp` endpoint |
| A2A sample client | `src/Startup/CrestApps.Core.Mvc.Samples.A2AClient` | Razor Pages client for agent cards and tasks, with a server selector | Exercising a host's A2A endpoints |
| Shared sample library | `src/Startup/CrestApps.Core.Startup.Shared` | Site settings store, option bridges, sample authorization handlers, article demo | Patterns to copy, not to reference |View the complete source on GitHubcrestapps-core-signalr
When your agent uses it
Skill for SignalR in CrestApps.Core 2.0. Covers AddSignalR on the AI suite builder and AddCoreSignalR with a tenant path prefix and the store-committer hub filter, the global hub defaults it sets (camelCase JSON, eight parallel invocations per client, a stream buffer of 64) that realtime WebRTC signaling depends on, per-hub chat options with ConfigureCrestAppsChatHubOptions, HubRouteManager path and URL generation, mapping hubs in minimal hosting, connection-level and per-invocation authorization for AIChatHubCore and ChatInteractionHubBase, access tokens for headless clients, reading the caller through Context.User and IUserAccessor, pinning the browser SignalR client with an integrity hash, and Redis or Azure SignalR scale-out. Use it when mapping CrestApps chat hubs, generating hub URLs for JavaScript clients, securing hubs, or troubleshooting stalled realtime handshakes, queued hub calls, or cross-tenant hub URLs.
What it loads into context
Frontmatter
234 tokensAlways available to the agent
SKILL.md
1,979 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Register SignalR
- Map Hubs with Minimal Hosting
- Generate Client URLs
- Authorization
- Browser Client
- Scale-Out
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore8,610 bytes
Read SKILL.md
# CrestApps.Core SignalR
The `CrestApps.Core.SignalR` package registers SignalR with CrestApps defaults and a `HubRouteManager` that builds hub paths and absolute URLs (with an optional tenant prefix). The chat hubs themselves (`AIChatHubCore<TClient>`, `ChatInteractionHubBase`) live in `CrestApps.Core.AI.Chat`; see `crestapps-core-chat-interactions`.
## Register SignalR
Through the AI suite builder, optionally with the store-committer hub filter so staged store writes are committed after each hub invocation:
```csharp
using CrestApps.Core.SignalR;
builder.Services.AddCrestAppsCore(crestApps => crestApps
.AddAISuite(ai => ai
.AddSignalR(pathPrefix: "", addStoreCommitterFilter: true)View the complete source on GitHubcrestapps-core-templates
When your agent uses it
Skill for the general-purpose Liquid template engine in CrestApps.Core.Templates. Covers AddTemplating and TemplateOptions (code templates, discovery paths), AddTemplatesFromAssembly for embedded templates, the Templates and Templates/Prompts folder conventions and the Kind front matter, Markdown front matter fields including Parameters, ITemplateService (ListAsync, GetAsync with aliases, RenderAsync, MergeAsync, GetByKindAsync), ITemplateEngine and FluidTemplateEngine behavior (deny-by-default member access, whitespace normalization, TryValidate), the include_prompt filter and render_ai_template tag, TemplateBuilder composition, and custom ITemplateProvider and IDynamicTemplateProvider sources for templates stored in a database. Use it when registering, rendering, composing, or storing Liquid templates; use crestapps-core-ai-templates for AI prompt and profile templates.
What it loads into context
Frontmatter
199 tokensAlways available to the agent
SKILL.md
1,813 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Registration
- Template File Format
- Render and Compose
- Store Templates in a Database
- Upgrading from 1.x
Files
SKILL.mdcore8,527 bytes
Read SKILL.md
# CrestApps.Core Templates
You are a CrestApps.Core expert. Generate code for `CrestApps.Core.Templates` discovery, Liquid rendering and composition.
## Guidelines
- `CrestApps.Core.Templates` is standalone. `services.AddTemplating(...)` registers `ITemplateEngine` (`FluidTemplateEngine`, singleton), `ITemplateService` (`DefaultTemplateService`, scoped), the Markdown `ITemplateParser`, and the code, file-system and prompt file-system providers. It also adds the `include_prompt` Liquid filter.
- `CrestApps.Core.AI` already calls `AddTemplating()` through `AddCoreAITemplating()`, which adds AI template sources and the system-prompt profile template provider. Use `crestapps-core-ai-templates` for that layer.
- `ITemplateService.RenderAsync(id, arguments)` renders a registered template; `ITemplateEngine.RenderAsync(text, arguments)` renders an in-memory Liquid string.
- `FluidTemplateEngine` uses Fluid's deny-by-default member access. Register every POCO a template reads: `services.Configure<Fluid.TemplateOptions>(o => o.MemberAccessStrategy.Register<Customer>())`. Dictionaries and primitives need no registration.
- Rendering trims each line and collapses runs of blank lines. A template that fails to parse is logged as a warning and returned unrendered; check templates with `TryValidate` before saving them.
- Template identifiers are case-insensitive. When two providers return the same `Id`, the first one read wins.
- `ITemplateService`, `ITemplateEngine` and `ITemplateProvider` members take an optional `CancellationToken`; pass it through custom providers.
View the complete source on GitHubcrestapps-core-tool-instances
When your agent uses it
Skill for user-configured AI tool instances in CrestApps.Core 2.0. Covers AddToolInstances with YesSql or EntityCore stores, authoring an IAIToolInstanceSource and registering it with AddSource, AIToolInstance names, descriptions and the tool_instance_ function prefix, attaching instances with AIToolInstanceMetadata, declared parameters with AIToolInstanceParameterCapabilities, AIToolParameterBindingOption, Model, Fixed and Context fills, AIToolParameterBinder, AIToolParameterSchemaBuilder and IAIToolParameterContextResolver, the built-in HTTP API request source, documentation search sources (sitemap, search index, Algolia and live website search) with DocumentationSearchOptions, the data source search source with multi-phrase Reciprocal Rank Fusion, and per-instance authorization by subclassing ToolInstanceRegistryProvider. Use it when letting users configure callable tools, exposing several knowledge bases or documentation sites to the model, or gating instances per user.
What it loads into context
Frontmatter
230 tokensAlways available to the agent
SKILL.md
2,533 tokensWhen the skill is activated
Reference documents
1,187 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Registration
- Implement a Source
- Attach Instances
- Parameters
- Built-in Sources
- Gate Instances Per User
- Upgrading from 1.x
Files
SKILL.mdcore11,784 bytesSKILL.mdcore11,784 bytesSKILL.mdcore11,784 bytesSKILL.mdcore11,784 bytesSKILL.mdcore11,784 bytesSKILL.mdcore11,784 bytesSKILL.mdcore11,784 bytesSKILL.mdcore11,784 bytesreferences/tool-instance-parameters-examples.mddoc5,723 bytes
Read SKILL.md
# CrestApps.Core Tool Instances
A developer writes a **source** (`IAIToolInstanceSource`) once; users create many **instances** (`AIToolInstance`) of it, each with its own name, description and settings. Every instance reaches the model as a distinct function, so the model only decides when to call it.
## Guidelines
- `AddToolInstances(...)` registers the catalog manager, the completion handler and the default `IAIToolParameterContextResolver`; with `useDefaultRegistry: true` (default) it also registers `ToolInstanceRegistryProvider`.
- Register a store on the tool-instances builder (`AddYesSqlStores()` or `AddEntityCoreStores()`); the feature does not pick one. YesSql hosts create the table with `schemaBuilder.CreateAIToolInstanceIndexSchemaAsync(yesSqlStoreOptions)`.
- An instance's `Name` is its stable lookup key and is fixed after creation. Its function name is `instance.GetFunctionName()`: `tool_instance_` plus a provider-safe version of the name, capped at 64 characters, with a deterministic hash when normalization is lossy, so it never collides with an `AddCoreAITool` name.
- Write a specific `Description`; it is the model's main signal for choosing between instances.
- Protect secrets in settings with ASP.NET Core Data Protection and never expose them as model arguments. Use `Fixed` or `Context` parameter fills for values the model must not choose.
## Registration
View the complete source on GitHubcrestapps-core-web-crawlers
When your agent uses it
Skill for CrestApps.Core web crawlers that scrape public websites into a Web AI data source. Covers CrestApps.Core.AI.WebCrawlers with AddCoreWebCrawlers and AddCoreWebCrawlerStoresYesSql or AddCoreWebCrawlerStoresEntityCore, WebCrawler records with SitemapWebCrawlerMetadata, the Sitemap strategy for urlset, sitemapindex, gzip, text sitemaps, feeds and robots.txt, WebCrawlerOptions, the re-index planner and background service with lastmod-based incremental updates, PartiallyDiscovered results that never delete pages, page URL citations, HtmlIngestionDocumentReader from CrestApps.Core.DataIngestion, crawlers that feed a File data source, and custom IWebCrawlerStrategy implementations.
What it loads into context
Frontmatter
182 tokensAlways available to the agent
SKILL.md
2,315 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Registration
- A Crawler Record
- Re-indexing
- Feeding a File Data Source
- Custom Strategy
- Upgrading
Files
SKILL.mdcore10,264 bytesSKILL.mdcore10,264 bytesSKILL.mdcore10,264 bytesSKILL.mdcore10,264 bytesSKILL.mdcore10,264 bytesSKILL.mdcore10,264 bytesSKILL.mdcore10,264 bytes
Read SKILL.md
# CrestApps.Core Web Crawlers
A **Web** AI data source (`AIDataSourceSourceTypes.Web`) is a target bucket with no site configuration and no field mapping. A **web crawler** (`WebCrawler` record) chooses a strategy (its `Source`, for example `Sitemap`), stores that strategy's settings, and points at the data source. Many crawlers can fill one knowledge base, each re-crawled on its own interval. Folders and file servers use file sources instead (`crestapps-core-file-sources`); the data source model is in `crestapps-core-data-sources`.
## Registration
```csharp
using CrestApps.Core.AI.WebCrawlers;
using CrestApps.Core.Data.YesSql;
builder.Services.AddCrestAppsCore(crestApps => crestApps
.AddAISuite(ai => ai.AddOpenAI())
.AddIndexingServices(indexing => indexing
.AddYesSqlStores()View the complete source on GitHubcrestapps-core-yessql-stores
When your agent uses it
Skill for the CrestApps.Core.Data.YesSql persistence backend in CrestApps.Core 2.0. Covers AddYesSqlDataStore and AddCoreYesSqlDataStore (IStore, collections, index provider registration, scoped ISession, YesSqlStoreCommitter), YesSqlStoreOptions collection names, per-feature AddYesSqlStores on every feature builder including personas and tool instances, the service-collection store methods for web crawlers, file sources, knowledge objects and ingestion item state, the full index and IndexProvider inventory, creating index tables with the Create*IndexSchemaAsync SchemaBuilder extensions, custom models with DocumentCatalog and CatalogItemIndex, and QueryContext paging. Use it when a host persists CrestApps.Core data with YesSql or troubleshoots missing tables, collections, or uncommitted writes.
What it loads into context
Frontmatter
200 tokensAlways available to the agent
SKILL.md
3,322 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Rules
- Registration
- Collections
- Create the Index Tables
- Store and Index Inventory
- Custom Models
- Paging
- Upgrading from 1.x
Files
SKILL.mdcore14,804 bytesSKILL.mdcore14,804 bytesSKILL.mdcore14,804 bytes
Read SKILL.md
# CrestApps.Core YesSql Stores
You are a CrestApps.Core expert. Generate accurate YesSql persistence code with `CrestApps.Core.Data.YesSql`.
## Rules
- Register `.AddYesSqlDataStore(configuration => configuration.UseSqLite(...))` on the root builder (or `services.AddCoreYesSqlDataStore(...)`). On first resolution it creates the singleton `IStore`, initializes the `AI`, `AIDocs`, `AIMemory` and default collections plus any collection an index provider names, and registers every `IIndexProvider` in DI. It also registers scoped `ISession`, scoped `YesSqlStoreCommitter` as `IStoreCommitter`, and `AddCatalogManagers()`.
- `AddYesSqlStores()` on a feature builder only selects stores and index providers. Without `AddYesSqlDataStore(...)` nothing can resolve `ISession`.
- Register custom `IIndexProvider` implementations before the `IStore` is first resolved, or they are never registered with the store.
- The package does not create index tables. Run the `Create*IndexSchemaAsync` extensions once per database before serving requests (the samples' `InitializeYesSqlSchemaAsync()` is sample code).
- Always pass the resolved `YesSqlStoreOptions` to the schema extensions. They read collection names from it; passing `null` creates the tables in the root collection while the index providers query the `AI` collection.
- `YesSqlStoreCommitter` flushes the scoped `ISession`. Add the MVC, hub or endpoint commit filter, or commit explicitly in background scopes.
## RegistrationView the complete source on GitHuborchardcore-addresses
When your agent uses it
Skill for the CrestApps Orchard Core Addresses module (CrestApps.OrchardCore.Addresses, Addresses.Countries, Addresses.GooglePlaces). Covers the immutable Address value shared by customers, checkout, orders, shipping and taxation, per-country address formats from Google address data with AddAddressesCore, IAddressFormatProvider and AddressFormat, IAddressValidator and AddressProblem, IAddressFormatter, region codes, the AddressEditor shape with IAddressEditorService and AddressEditorOptions, CreateAddressEditorAsync and CreateAddressDisplayAsync, the addresses/formats endpoint, ICountryService and managed Country content items, address suggestions through IAddressAutocompleteProvider, the Google Places provider with its protected API key, the address-autocomplete rate-limit group, and the ManageAddressSuggestions permission. Use it when requests mention Orchard Core addresses, international address formats, address validation, a country list, address autocomplete or Google Places.
What it loads into context
Frontmatter
212 tokensAlways available to the agent
SKILL.md
2,324 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Where it fits in the commerce suite
- Features
- The Address value
- Formats, validation and printing
- The address editor
- Country lists
- Address suggestions
- Permissions
Files
SKILL.mdcore10,140 bytes
Read SKILL.md
# CrestApps Addresses
Addresses (new in CrestApps.OrchardCore 3.0) gives the platform one address structure for every country. Each country's rules decide which parts it has, which are required, and how it is checked and printed. The data is a snapshot of Google's address data (CC BY 4.0) inside the package; a site never calls Google for formats.
## Where it fits in the commerce suite
| Module | Relationship |
| --- | --- |
| Shipping (`orchardcore-shipping`) | Requires Addresses; zones and rates use `Address` |
| Customers (`orchardcore-customers`) | Address book edited with the address editor |
| Checkout and Orders (`orchardcore-checkout`, `orchardcore-orders`) | Contact and shipping steps, immutable order copies, printed with `IAddressFormatter` |
| Taxation (`orchardcore-taxation`) | Jurisdictions match region codes; country lists come from `ICountryService` |
| CrestApps Content Fields (`orchardcore-crestapps-content-fields`) | Address Field (`CrestApps.OrchardCore.ContentFields.Address`) on any content type |
View the complete source on GitHuborchardcore-ai
When your agent uses it
Skill for the CrestApps.OrchardCore.AI foundation module (AI Services) in CrestApps.OrchardCore 3.0. Covers the CrestApps.OrchardCore.AI, AI.Chat.Core, AI.Chat.Api, AI.ConnectionManagement, AI.ToolInstances and AI.Personas features, the Artificial Intelligence admin screens and permissions, appsettings.json Connections, Deployments and DefaultParameters, GeneralAISettings and DefaultAIDeploymentSettings site settings read through IOptionsMonitor, the AIDeployment, DeleteAIDeployments and AIProfile recipe steps, AI profile types (Chat, Utility, TemplatePrompt, Agent), profiles created in migrations with IAIProfileManager, resolving deployments by slot with IAIDeploymentManager.ResolveSlotAsync, IAIClientFactory speech-to-text and text-to-speech clients, deployment plan steps, and upgrading from 2.x. Use this skill when requests mention Orchard Core AI, AI Services, AI profiles, AI deployments, AI settings, AIProfile recipe, ChatModeProfileSettings, AIProfileMetadata, AgentMetadata, or AI profiles in code.
What it loads into context
Frontmatter
255 tokensAlways available to the agent
SKILL.md
4,388 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Features
- Admin screens and permissions
- Configuration (appsettings.json)
- AI site settings
- Deployments by recipe
- AI profiles
- Resolving deployments and clients in code
- Recipes and deployment steps
- Upgrading from 2.x
- Related skills
Files
SKILL.mdcore18,654 bytes
Read SKILL.md
# Orchard Core AI Services
`CrestApps.OrchardCore.AI` is the Orchard foundation of the CrestApps AI suite. It wires the shared
CrestApps.Core AI services into Orchard Core and adds connection, deployment, profile, template, tool
instance and persona management, AI site settings, recipes, deployment steps and workflow activities.
## Guidelines
- Install `CrestApps.OrchardCore.AI` and at least one provider package (`CrestApps.OrchardCore.OpenAI`,
`CrestApps.OrchardCore.OpenAI.Azure`, `CrestApps.OrchardCore.AzureAIInference`, `CrestApps.OrchardCore.Ollama`)
in the web/startup project.
- `CrestApps.OrchardCore.AI` is dependency-only: a provider or a feature such as AI Chat enables it.
- A **connection** holds credentials, a **deployment** is one model used through a connection and declares
**model capabilities**, and an **AI profile** names deployments by technical name. Where a deployment isView the complete source on GitHuborchardcore-ai-a2a-client
When your agent uses it
Skill for the CrestApps Orchard Core A2A Client feature (CrestApps.OrchardCore.AI.A2A), which connects AI profiles to remote Agent-to-Agent hosts. Covers the Agent to Agent Hosts admin screen, endpoint and agent-card discovery at /.well-known/agent-card.json with A2A 1.0 supportedInterfaces, A2AConnectionMetadata authentication types (Anonymous, ApiKey, Basic, OAuth2ClientCredentials, OAuth2PrivateKeyJwt, OAuth2Mtls, CustomHeaders), the A2AConnection recipe step, encrypted credentials, the ManageA2AConnections permission, assigning A2A connections to AI profiles, profile templates, chat interactions and the AI Completion using Direct Config workflow task, remote agents surfaced as tools through A2AAgentProxyTool, and the listAvailableAgents, findAgentForTask and findToolsForTask functions. Use this skill when requests mention Orchard Core A2A client, agent connections, calling a remote agent, multi-agent orchestration across sites, or troubleshooting remote agents that do not appear.
What it loads into context
Frontmatter
251 tokensAlways available to the agent
SKILL.md
1,585 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Enable the feature
- Add a connection
- Recipe step
- Assign connections
- How remote agents run
- Upgrading from 2.x
- Troubleshooting
Files
SKILL.mdcore6,504 bytes
Read SKILL.md
# Orchard Core A2A Client
The A2A Client feature lets Orchard Core AI experiences call agents hosted on other A2A servers, including other Orchard Core sites running the A2A Host feature (`orchardcore-ai-a2a-host`).
## Guidelines
- Feature ID `CrestApps.OrchardCore.AI.A2A`, from the `CrestApps.OrchardCore.AI.A2A` package (install it in the web/startup project). It depends on `CrestApps.OrchardCore.AI` and `CrestApps.OrchardCore.Resources`.
- Connections are managed under **Artificial Intelligence → Agent to Agent Hosts** (permission `ManageA2AConnections`, granted to Administrator by default).
- A connection points at the base URL of an A2A host. The agent card is resolved from `/.well-known/agent-card.json` and cached for 15 minutes.
- Agent endpoints are read from the card's A2A 1.0 `supportedInterfaces`. Older cards that only publish a top-level `url` are still handled.
- Each remote agent skill becomes a tool the model can call. Keep remote descriptions accurate, because they drive tool selection.
- Credentials are encrypted at rest with ASP.NET Core Data Protection.
## Enable the featureView the complete source on GitHuborchardcore-ai-a2a-host
When your agent uses it
Skill for the CrestApps Orchard Core A2A Host feature (CrestApps.OrchardCore.AI.A2A.Host), which exposes AI profiles of type Agent through the Agent-to-Agent protocol. Covers the public /.well-known/agent-card.json discovery endpoint, A2A 1.0 agent cards that publish their endpoint in supportedInterfaces with the JSON-RPC binding instead of the deprecated url field, multi-agent mode with /a2a?agent={agentName} versus ExposeAgentsAsSkill skill mode with agentName metadata routing, A2AHostOptions configured under OrchardCore:CrestApps:AI:A2AHost (AuthenticationType OpenId, ApiKey or None, ApiKey, RequireAccessPermission), security schemes advertised on the card, the AccessA2AHost permission, AI usage metered under the A2A category, and creating Agent profiles with the AIProfile recipe step. Use this skill when requests mention Orchard Core A2A host, exposing agents to other AI apps, agent cards, supportedInterfaces, ExposeAgentsAsSkill, or troubleshooting A2A clients that cannot reach an Orchard Core agent.
What it loads into context
Frontmatter
267 tokensAlways available to the agent
SKILL.md
1,776 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Enable the feature
- Create agent profiles
- Endpoints
- Configuration
- Usage analytics
- Upgrading from 2.x
- Troubleshooting
Files
SKILL.mdcore7,042 bytes
Read SKILL.md
# Orchard Core A2A Host
The A2A Host feature makes every AI profile of type **Agent** discoverable and callable by external A2A clients, including another Orchard Core site running the A2A Client feature (`orchardcore-ai-a2a-client`).
## Guidelines
- Feature ID `CrestApps.OrchardCore.AI.A2A.Host`, in the `CrestApps.OrchardCore.AI.A2A` package (install it in the web/startup project). It depends only on `CrestApps.OrchardCore.AI`.
- Only profiles whose `Type` is `Agent` are exposed. Their `Name` identifies the agent and their `Description` becomes the card and skill description.
- Cards follow A2A 1.0: each card publishes its endpoint in `supportedInterfaces` (protocol binding JSON-RPC). The deprecated top-level `url` is no longer emitted.
- The discovery endpoint is always anonymous so clients can read the authentication requirements. The `/a2a` endpoint is protected by the `A2AHostPolicy` policy.
- Options come from shell configuration only (no admin settings page). Default authentication is `OpenId`.
- Use `None` only for local development.
## Enable the featureView the complete source on GitHuborchardcore-ai-agent
When your agent uses it
Skill for the CrestApps Orchard Core AI Agent module (CrestApps.OrchardCore.AI.Agent) and agent profiles. Covers the 50+ Orchard-aware AI tools it registers and the Orchard Core feature that enables each group (content, content definitions, features, tenants, recipes, users, roles, workflows, email, SMS, notifications, AI profiles, chat analytics), system tools such as getContentItemSchema and tool dependencies, recipe-schema-driven tools that need CrestApps.OrchardCore.Recipes, AI profiles of type Agent with AgentMetadata Availability (OnDemand or AlwaysAvailable) and AgentInvocationMetadata, attaching agents to other profiles, exposing agents through the A2A host and the MCP server, and the security model for agent tools. Use this skill when requests mention AI Agent tools, natural-language site management, agent profiles, searchForContentItems, createOrUpdateContentItem, importOrchardCoreRecipe, createTenant, enableSiteFeature, sendEmail, listWorkflowTypes, listAIProfiles or queryChatSessionMetrics.
What it loads into context
Frontmatter
244 tokensAlways available to the agent
SKILL.md
2,136 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Enable
- Tool catalog
- Agent profiles
- Security
- Troubleshooting
Files
SKILL.mdcore8,871 bytes
Read SKILL.md
# Orchard Core AI Agent
The AI Agent module registers Orchard-aware tools that let an AI profile manage the site in natural language: content, content definitions, features, tenants, recipes, users, roles, workflows, communications, and AI profiles. Agent **profiles** (profiles of type Agent) are a separate concept that comes from the base AI module and can use these tools.
## Guidelines
- Feature ID `CrestApps.OrchardCore.AI.Agent`; it depends on `CrestApps.OrchardCore.AI` and `CrestApps.OrchardCore.Recipes`. Install `CrestApps.OrchardCore.AI.Agent` in the web/startup project.
- Each tool group registers only when its Orchard Core feature is enabled.
- Almost every tool is **selectable**: it appears grouped by category in the **Tools** section of the **Capabilities** tab, and nothing runs until a profile, template, or interaction selects it.
- `getContentItemSchema` is a **system** tool (auto-included, never in pickers). `createOrUpdateContentItem` depends on it and `importOrchardCoreRecipe` depends on `getOrchardCoreRecipeJsonSchema`, so selecting the main tool brings in its schema tool.
- AI profile sessions run the profile as configured and the tools do not re-check site permissions, so attach management tools only to profiles whose query permission is restricted (see `orchardcore-ai-tools`).
## Enable
View the complete source on GitHuborchardcore-ai-chat
When your agent uses it
Skill for setting up and extending AI Chat in Orchard Core with the CrestApps AI Chat module. Covers the CrestApps.OrchardCore.AI.Chat and CrestApps.OrchardCore.AI.Chat.AdminWidget features, chat profiles on the admin menu, the admin chat session and history pages, Invoke Profile, the frontend AIChat widget with AIProfilePart, chat modes through ChatModeProfileSettings with ConversationDeploymentName and VoiceName, text-to-speech playback, session uploads, citations, PromptSecurityOptions rate-limit tiers, AIVisitorIdentityOptions cross-site cookies, AIChatHub methods, the AIChatSessions admin list, and upgrading from deployment purposes and ChatMode.Realtime. Use this skill when requests mention Orchard Core AI Chat, chat profiles, chat widgets, anonymous chat visitors, chat rate limits, or prompt security. Strong matches include AIChatHub, AIChatProfileSettings, IsOnAdminMenu, AIProfilePart, QueryAIProfile, and AIChatApp.
What it loads into context
Frontmatter
229 tokensAlways available to the agent
SKILL.md
4,174 tokensWhen the skill is activated
Reference documents
1,773 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure AI Chat
Files
SKILL.mdcore17,897 bytesSKILL.mdcore17,897 bytesreferences/ai-chat-examples.mddoc7,408 bytes
Read SKILL.md
# Orchard Core AI Chat - Prompt Templates
## Configure AI Chat
You are an Orchard Core expert. Generate code, configuration, and recipes for adding profile-driven AI chat to an Orchard Core application with the CrestApps AI Chat module.
### Guidelines
- Install `CrestApps.OrchardCore.AI.Chat` and at least one provider package (OpenAI, Azure OpenAI, Azure AI Inference or Ollama) in the web/startup project.
- `CrestApps.OrchardCore.AI.Chat` depends on `OrchardCore.SignalR` (the Orchard Core module, not the deprecated CrestApps one), `OrchardCore.Liquid`, `CrestApps.OrchardCore.Resources`, `CrestApps.OrchardCore.AI` and the dependency-only `CrestApps.OrchardCore.AI.Chat.Core` (**AI Chat Services**).
- AI Chat ships no completion client. Enable a provider feature and create a connection and deployments for it.
- A deployment declares **model capabilities** in `Properties.AIDeploymentMetadata.Features`. The deployment purpose (`Purpose`, `Type`) is gone in 3.0. Which deployment serves chat, utility, speech and the other slots is chosen under **Settings → Artificial Intelligence → Default Deployments** or on the profile. See `orchardcore-ai-model-capabilities`.
- A chat-type profile with **Show On Admin Menu** (`AIChatProfileSettings.IsOnAdminMenu`) appears under **Artificial Intelligence**. The menu entry needs `QueryAnyAIProfile` or the per-profile `QueryAIProfile_{profileName}` permission.
- **Add Profile** opens the **New AI Profile** picker. **Blank profile** opens the editor; every other card creates the profile from a profile template. See `orchardcore-ai-profile-templates`.View the complete source on GitHuborchardcore-ai-chat-analytics
When your agent uses it
Skill for configuring AI Chat Session Analytics in Orchard Core with CrestApps modules. Covers the CrestApps.OrchardCore.AI.Chat.Analytics feature, per-profile AnalyticsMetadata (session metrics, AI resolution detection, conversion goals), the AI Chat Session Analytics, Extracted Data and Conversion Goals reports under Reports, the date range selector, CSV export, feedback ratings, inactivity timeout, data extraction and post-session processing tasks, the queryChatSessionMetrics tool, chat report builder data sources, and extending the dashboard with AIChatAnalyticsReport and AIChatAnalyticsFilter display drivers. Use it for chat analytics, containment rate, abandonment rate, conversion scoring, post-session dispositions, and related setup or troubleshooting work. Strong matches include ViewChatAnalytics, ExportChatAnalytics, AIChatSessionEvent, AIChatSessionMetricsIndex, AIProfilePostSessionSettings, and AIProfileDataExtractionSettings.
What it loads into context
Frontmatter
210 tokensAlways available to the agent
SKILL.md
2,394 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure AI Chat Analytics
Files
SKILL.mdcore11,015 bytes
Read SKILL.md
# Orchard Core AI Chat Analytics - Prompt Templates
## Configure AI Chat Analytics
You are an Orchard Core expert. Generate code, configuration, and recipes for AI chat session analytics and reporting with the CrestApps modules.
### Guidelines
- `CrestApps.OrchardCore.AI.Chat.Analytics` ships in the `CrestApps.OrchardCore.AI.Chat` package and depends on `CrestApps.OrchardCore.AI.Chat` and `CrestApps.OrchardCore.AI.Chat.Core`.
- Session metrics are **off by default**. Turn on **Enable session metrics** per chat profile (`AnalyticsMetadata.EnableSessionMetrics`) on the **Data Processing & Metrics** tab. The analytics fields only appear on **Chat** profiles.
- The three reports sit under **Reports → Artificial Intelligence Reports** and use the same date range selector as other reports (relative ranges such as *Last 30 Days*, or custom dates) plus an optional profile filter.
- **AI Usage Analytics** is not part of this feature. It needs only AI Chat, is listed under **Reports → Billing & Usage**, and is covered by `orchardcore-ai-usage-analytics`.
- Dashboard sections are display drivers on `AIChatAnalyticsReport`; filters are display drivers on `AIChatAnalyticsFilter`.
- Session data is stored as `AIChatSessionEvent` documents indexed by `AIChatSessionMetricsIndex`.View the complete source on GitHuborchardcore-ai-chat-claude
When your agent uses it
Skill for configuring the Claude chat orchestrator in Orchard Core using the CrestApps AI Chat Claude module. Covers tenant Claude options from CrestApps AI Claude configuration and site settings, encrypted Anthropic credentials, model discovery, the anthropic orchestrator name, ClaudeSessionMetadata model and effort selection on AI profiles, profile templates, and chat interactions in recipes and editors, plus permission management. Use this skill when requests mention Orchard Core Claude Orchestrator, ClaudeOptionsConfiguration, Claude Settings, Anthropic API Key, Claude Profiles, Claude Templates, Claude Chat Interactions, or closely related CrestApps implementation, setup, extension, or troubleshooting work. Strong matches include work with CrestApps.OrchardCore.AI.Chat.Claude, ClaudeOptionsConfiguration, ClaudeSettingsDisplayDriver, AIProfileClaudeDisplayDriver, AIProfileTemplateClaudeDisplayDriver, ChatInteractionClaudeDisplayDriver, ClaudePermissionProvider.
What it loads into context
Frontmatter
213 tokensAlways available to the agent
SKILL.md
2,168 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure the Claude Chat Orchestrator
Files
SKILL.mdcore10,040 bytesSKILL.mdcore10,040 bytesSKILL.mdcore10,040 bytesSKILL.mdcore10,040 bytesSKILL.mdcore10,040 bytesSKILL.mdcore10,040 bytesSKILL.mdcore10,040 bytes
Read SKILL.md
# Orchard Core AI Chat Claude - Prompt Templates
## Configure the Claude Chat Orchestrator
You are an Orchard Core expert. Generate configuration, recipes, and extension code for Claude as an Orchard-managed **chat orchestrator** using CrestApps modules. Claude is not an AI provider connection or deployment provider in this integration.
### Guidelines
- Enable `CrestApps.OrchardCore.AI.Chat.Claude` to make the Claude orchestrator available to AI Profiles, profile-source AI Profile Templates, and Chat Interactions.
- The Claude feature depends on `CrestApps.OrchardCore.AI`; enable the feature rather than treating it as an OpenAI-compatible connection.
- `ClaudeOptionsConfiguration` binds shell configuration from `CrestApps:AI:Claude`, then overlays tenant `ClaudeSettings`.
- Tenant `BaseUrl` and `DefaultModel` override corresponding shell values only when populated.
- Use **Settings → Artificial Intelligence → Claude** to set tenant authentication, API key, base URL, and default model.
- API-key authentication stores `ProtectedApiKey` encrypted with ASP.NET Core Data Protection. Never put a production Anthropic key in a recipe, source file, or committed configuration.
- Claude is considered configured only when its authentication type is `ApiKey` and an encrypted API key exists.View the complete source on GitHuborchardcore-ai-chat-copilot
When your agent uses it
Skill for configuring the GitHub Copilot chat orchestrator in Orchard Core using the CrestApps AI Chat Copilot module. Covers GitHub OAuth and API key authentication modes, encrypted tenant and profile credentials, Copilot callback flow, CopilotOptions refreshed live through IOptionsMonitor, the copilot orchestrator name, and CopilotSessionMetadata model, effort, and allow-all selection on AI profiles, profile templates, and chat interactions. Use this skill when requests mention Orchard Core Copilot Orchestrator, GitHub Copilot SDK, GitHub OAuth, Copilot API Key, CopilotAuthController, CopilotOptionsConfiguration, Copilot Profiles, Copilot Templates, or closely related CrestApps implementation, setup, extension, or troubleshooting work. Strong matches include work with CrestApps.OrchardCore.AI.Chat.Copilot, CopilotOptionsConfiguration, CopilotAuthController, OrchardCoreCopilotCredentialStore, CopilotSettingsDisplayDriver, AIProfileCopilotDisplayDriver, ChatInteractionCopilotDisplayDriver.
What it loads into context
Frontmatter
240 tokensAlways available to the agent
SKILL.md
2,370 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure the GitHub Copilot Chat Orchestrator
Files
SKILL.mdcore10,411 bytesSKILL.mdcore10,411 bytesSKILL.mdcore10,411 bytes
Read SKILL.md
# Orchard Core AI Chat Copilot - Prompt Templates
## Configure the GitHub Copilot Chat Orchestrator
You are an Orchard Core expert. Generate configuration, recipes, and extension code for the GitHub Copilot SDK-based **chat orchestrator**. This module is an alternative orchestration runtime, not an Orchard AI provider connection or deployment provider.
### Guidelines
- Enable `CrestApps.OrchardCore.AI.Chat.Copilot` to select GitHub Copilot orchestration on profiles, profile-source templates, and Chat Interactions.
- `CopilotOptionsConfiguration` binds `CrestApps:AI:Copilot` shell configuration and then overlays configured `CopilotSettings`.
- Tenant settings take precedence when `AuthenticationType` is non-default or `HasStoredConfiguration()` is true.
- Use `GitHubOAuth` for user or profile GitHub credentials and `ApiKey` for a directly configured model provider.
- `NotConfigured` intentionally disables the Copilot orchestrator for a tenant.
- OAuth mode requires a GitHub OAuth App, a Copilot-entitled identity, and the callback URL `/copilot/OAuthCallback`.
- OAuth settings protect the client secret; API-key settings protect the provider API key with ASP.NET Core Data Protection.View the complete source on GitHuborchardcore-ai-chat-interactions
When your agent uses it
Skill for configuring AI Chat Interactions in Orchard Core with CrestApps modules. Covers the CrestApps.OrchardCore.AI.Chat.Interactions feature for ad-hoc chats without predefined profiles, per-interaction chat, utility and conversation deployments, tools, agents, tool instances, personas and prompt templates, the Knowledge panel with data sources, OData filters and uploads through CrestApps.OrchardCore.AI.Documents.ChatInteractions, the site-wide ChatInteractionChatModeSettings, the generate_image and generate_chart system tools, Chat with Preset Settings cloning, the IChatInteractionSettingsHandler pipeline, ChatInteractionHub methods, the AIChatInteractions admin list, permissions, and upgrading from deployment purposes. Use this skill when requests mention Orchard Core Chat Interactions, ad-hoc AI chat, chat playground, or chat interaction settings. Strong matches include ChatInteraction, ChatInteractionHub, IChatInteractionSettingsHandler, ListChatInteractions, and EditChatInteractions.
What it loads into context
Frontmatter
225 tokensAlways available to the agent
SKILL.md
2,311 tokensWhen the skill is activated
Reference documents
1,486 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure AI Chat Interactions
Files
SKILL.mdcore10,313 bytesSKILL.mdcore10,313 bytesreferences/ai-chat-interactions-examples.mddoc6,507 bytes
Read SKILL.md
# Orchard Core AI Chat Interactions - Prompt Templates
## Configure AI Chat Interactions
You are an Orchard Core expert. Generate code, configuration, and recipes for ad-hoc AI chat interactions, with optional document upload and retrieval, using the CrestApps modules.
### Guidelines
- `CrestApps.OrchardCore.AI.Chat.Interactions` gives chat without a predefined AI profile. It depends on `OrchardCore.SignalR`, `OrchardCore.Liquid`, `CrestApps.OrchardCore.Resources`, `CrestApps.OrchardCore.AI` and `CrestApps.OrchardCore.AI.Chat.Core`.
- An interaction picks its own chat and utility deployments. Left empty, the connection default and then **Default Chat Deployment** in **Settings → Artificial Intelligence → Default Deployments** apply. Dropdowns are grouped by connection.
- The chat deployment picker lists text-capable deployments only. A speech-to-speech model goes in the **Conversation deployment** picker. See `orchardcore-ai-realtime-voice`.
- **New Chat** creates and saves the interaction immediately. Settings changes are saved over SignalR (`SaveSettings`) through the `IChatInteractionSettingsHandler` pipeline, so orchestrator-specific fields need no change to the hub or `chat-interaction.js`.
- The settings panel covers model parameters, the orchestrator, tools, agents, MCP and A2A connections, tool instances, prompt templates and an **AI persona** (with `CrestApps.OrchardCore.AI.Personas`).
- Image and chart generation are the orchestration system tools `generate_image` and `generate_chart`, not interaction intents. `generate_image` needs a deployment declaring `imageOutput` in the `image` slot.View the complete source on GitHuborchardcore-ai-chat-notifications
When your agent uses it
Skill for sending transient SignalR chat UI notifications in Orchard Core using the CrestApps AI Chat feature. Covers IChatNotificationSender, keyed IChatNotificationTransport implementations, keyed IChatNotificationActionHandler callbacks, notification models, built-in transfer and session actions, and custom notification delivery. Use this skill when requests mention Orchard Core Chat Notifications, AI Chat System Messages, typing indicators, transfer status, SignalR chat notifications, IChatNotificationSender, IChatNotificationActionHandler, or closely related CrestApps implementation, setup, extension, or troubleshooting work. Strong matches include work with CrestApps.OrchardCore.AI.Chat, IChatNotificationSender, IChatNotificationTransport, IChatNotificationActionHandler, AIChatNotificationTransport, ChatInteractionNotificationTransport, ChatHubBase, ChatNotificationActionContext.
What it loads into context
Frontmatter
195 tokensAlways available to the agent
SKILL.md
2,113 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Send Transient Chat UI Notifications
Files
SKILL.mdcore10,301 bytes
Read SKILL.md
# Orchard Core AI Chat Notifications - Prompt Templates
## Send Transient Chat UI Notifications
You are an Orchard Core expert. Generate C# integration code for transient, non-persistent system messages delivered to connected chat clients through SignalR. These notifications are an **AI Chat** feature and are distinct from response handlers and persisted chat messages.
### Guidelines
- Enable `CrestApps.OrchardCore.AI.Chat` to use the AI Chat session notification transport.
- Notifications are transient UI state. Do not use them for conversation history, durable audit records, or model prompt content.
- Inject `IChatNotificationSender` to send, update, and remove notifications.
- Route every request with the correct `ChatContextType`: `AIChatSession` for profile chat or `ChatInteraction` for ad-hoc interactions.
- The sender resolves `IChatNotificationTransport` as a keyed service using the chat context type.
- `AIChatNotificationTransport` broadcasts to the `AIChatHub` session group.
- `ChatInteractionNotificationTransport` broadcasts to the `ChatInteractionHub` interaction group when the interactions feature is enabled.View the complete source on GitHuborchardcore-ai-connections
When your agent uses it
Skill for managing AI provider connections in Orchard Core with the CrestApps.OrchardCore.AI.ConnectionManagement feature in CrestApps.OrchardCore 3.0. Covers the Provider Connections admin list and editor, the ManageProviderConnections permission, provider-specific connection metadata (OpenAIConnectionMetadata, AzureConnectionMetadata, AzureAIInferenceConnectionMetadata, Ollama Endpoint), API key encryption with data protection, managed identity authentication, configuration-backed read-only connections in appsettings.json, the AIProviderConnections recipe step, the AI Provider Connections deployment step and stripped API keys, shell release on save, and troubleshooting. Use this skill when requests mention AI connection management, provider connections, AIProviderConnection, AIProviderConnections recipe step, AIProviderConnectionDeploymentStep, connection credentials, or connecting Orchard Core to OpenAI, Azure OpenAI, Azure AI Inference (GitHub Models) or Ollama.
What it loads into context
Frontmatter
212 tokensAlways available to the agent
SKILL.md
1,920 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Features and providers
- Admin UI
- Connections by recipe
- Connections in appsettings.json
- Export connections
- Troubleshooting
- Related skills
Files
SKILL.mdcore8,446 bytesSKILL.mdcore8,446 bytes
Read SKILL.md
# Orchard Core AI Connection Management
A connection stores the endpoint and credentials for one provider account. Deployments name a connection
through `ConnectionName`; profiles name deployments. This skill covers the connection layer only; for
deployments and capabilities see `orchardcore-ai` and `orchardcore-ai-model-capabilities`.
## Guidelines
- Enable `CrestApps.OrchardCore.AI.ConnectionManagement` to get the **Artificial Intelligence > Provider
Connections** screen, the provider connection editors and the `AIProviderConnections` recipe step. The
step is registered only while this feature is enabled.
- Install each provider package (`CrestApps.OrchardCore.OpenAI`, `CrestApps.OrchardCore.OpenAI.Azure`,
`CrestApps.OrchardCore.AzureAIInference`, `CrestApps.OrchardCore.Ollama`) in the web/startup project and
enable its feature.View the complete source on GitHuborchardcore-ai-data-sources
When your agent uses it
Skill for CrestApps AI Data Sources in Orchard Core 4.0 (CrestApps.OrchardCore 3.0). Covers knowledge base indexes, RAG retrieval, the source types SearchIndexProfile, Elasticsearch, AzureAISearch, PostgreSQL, Web and File, embedding deployments picked by the embedding slot, OData filters and translators, preemptive RAG and IsInScope, citations and IAIReferenceLinkResolver, sync and alignment, the AIDataSource recipe and deployment steps, global Elasticsearch and PostgreSQL connections, AIDataSourceOptions through IOptionsMonitor, and the AIDataSources admin list. Use it for CrestApps.OrchardCore.AI.DataSources, CrestApps.OrchardCore.AI.DataSources.Elasticsearch, CrestApps.OrchardCore.AI.DataSources.AzureAI, CrestApps.OrchardCore.AI.DataSources.PostgreSQL, AIDataSource, AIDataSourceRagMetadata, DataSourceMetadata, PostgreSQLSourceMetadata, IAIDataSourceIndexingQueue, IAIDataSourceSourceHandler, IODataFilterTranslator, and ManageAIDataSources.
What it loads into context
Frontmatter
261 tokensAlways available to the agent
SKILL.md
3,912 tokensWhen the skill is activated
Reference documents
2,277 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure AI data sources and knowledge base retrieval
Files
SKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesSKILL.mdcore17,016 bytesreferences/data-sources-examples.mddoc9,583 bytes
Read SKILL.md
# Orchard Core AI Data Sources
## Configure AI data sources and knowledge base retrieval
You are an Orchard Core expert. Generate configuration, recipes, and code for CrestApps AI data sources: a data source reads documents from a source, chunks and embeds them into a shared **AI knowledge base index**, and AI profiles, chat interactions, workflow tasks, and tool instances retrieve from it (RAG).
### Guidelines
- `CrestApps.OrchardCore.AI.DataSources` is `EnabledByDependencyOnly`. Enable a provider feature (Elasticsearch, Azure AI Search, PostgreSQL), `CrestApps.OrchardCore.AI.WebCrawlers`, or `CrestApps.OrchardCore.AI.FileSources` and it comes along. It depends on `CrestApps.OrchardCore.AI` and `OrchardCore.Indexing`.
- The knowledge base index is an Orchard index profile of type `DataSourceIndex`, created under **Search > Indexing** as **AI Knowledge Base Index (Elasticsearch)** or **AI Knowledge Base Index (Azure AI Search)**. Lucene cannot hold a knowledge base.
- Each knowledge base index names one **embedding deployment**. The picker lists deployments that fill the `embedding` slot, so the deployment must declare the `textEmbedding` capability. The deployment is locked once the index exists, because it fixes the vector dimensions.
- A `SearchIndexProfile` source must be an Elasticsearch or Azure AI Search index profile. Only those providers register an `IDataSourceDocumentReader`; a Lucene index or an AI-managed index (AI Documents, AI Memory, another knowledge base) is rejected.
- The source type is chosen in the **Add Data Source** dialog and stays fixed. The destination index and field mapping lock once the data source is configured.
- Field mapping (key, title, content) is shown and required only for `SearchIndexProfile`, `Elasticsearch`, `AzureAISearch`, and `PostgreSQL`. `Web` and `File` sources shape their own documents.View the complete source on GitHuborchardcore-ai-documents
When your agent uses it
Skill for CrestApps AI Documents in Orchard Core 4.0 (CrestApps.OrchardCore 3.0). Covers document upload, text and figure extraction, chunking, embedding and RAG for chat interactions, AI profiles, profile templates, chat sessions and widgets, the AI Documents index with its embedding deployment, InteractionDocumentSettings and DocumentsMetadata, Chunk and Hierarchical retrieval, the largest indexable document, figure descriptions with the vision slot, upload scanning through Orchard Core FileCreationService and ClamAV, file storage, document cleanup, the PowerPoint, Word and PDF agents, and IAIChatDocumentEventHandler. Use it for CrestApps.OrchardCore.AI.Documents, CrestApps.OrchardCore.AI.Documents.ChatInteractions, CrestApps.OrchardCore.AI.Documents.Profiles, CrestApps.OrchardCore.AI.Documents.ChatSessions, IAIDocumentStore, IDocumentFileStore, IVectorSearchService, IUploadedFileScanner, OrchardUploadedFileScanner, and AIProfileSessionDocumentsMetadata.
What it loads into context
Frontmatter
244 tokensAlways available to the agent
SKILL.md
2,919 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure document upload and RAG
Files
SKILL.mdcore12,640 bytesSKILL.mdcore12,640 bytes
Read SKILL.md
# Orchard Core AI Documents
## Configure document upload and RAG
You are an Orchard Core expert. Generate configuration, recipes, and code that let users and administrators attach documents to CrestApps AI chat surfaces, and let the model retrieve from them.
### Guidelines
- The base feature `CrestApps.OrchardCore.AI.Documents` is `EnabledByDependencyOnly`. It depends on `CrestApps.OrchardCore.AI.Chat.Interactions` and `OrchardCore.Indexing`, and comes along with any of the sub-features below.
- Embeddable documents follow upload, scan, extract, chunk, embed, index, and vector search. Tabular files (`.csv`, `.tsv`, `.xlsx`, `.xls`) are non-embeddable; they are loaded into the conversation's tabular workspace instead.
- Indexing needs an **AI Documents** index profile from `CrestApps.OrchardCore.AI.Documents.Elasticsearch` or `CrestApps.OrchardCore.AI.Documents.AzureAI` (see `orchardcore-ai-documents-elasticsearch` and `orchardcore-ai-documents-azureai`).
- The AI Documents index names its embedding deployment. The picker lists deployments in the `embedding` slot, so the deployment must declare `textEmbedding`. It is locked once the index exists.
- Pick the active index once. Changing it later loses access to documents of existing sessions.
- PDF and Office formats need the extractor features (see `orchardcore-ai-documents-extractors`). Azure Blob Storage is optional (see `orchardcore-ai-documents-azure-storage`).View the complete source on GitHuborchardcore-ai-documents-azure-storage
When your agent uses it
Skill for storing CrestApps Orchard Core AI Documents in Azure Blob Storage (CrestApps.OrchardCore 3.0 on Orchard Core 4.0). Covers AIDocumentBlobStorageOptions, the BlobFileStore replacement, Liquid container names and base paths per tenant, tenant container lifecycle, cleanup choices, and Azure configuration. Use this skill when requests mention Orchard Core AI Documents Azure Blob Storage, AIDocumentBlobStorageOptions, AIDocumentBlobContainerTenantEvents, document file storage, or Azure document containers. Strong matches include work with CrestApps.OrchardCore.AI.Documents.Azure, IDocumentFileStore, DefaultDocumentFileStore, BlobFileStore, MediaBlobStorageOptionsBase, and IModularTenantEvents.
What it loads into context
Frontmatter
186 tokensAlways available to the agent
SKILL.md
1,984 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Azure Blob document storage
Files
SKILL.mdcore9,428 bytesSKILL.mdcore9,428 bytes
Read SKILL.md
# Orchard Core AI Documents Azure Blob Storage
## Configure Azure Blob document storage
You are an Orchard Core expert. Configure CrestApps AI Documents to place uploaded
document files in Azure Blob Storage while preserving the normal document extraction,
chunking, embedding, indexing, and RAG workflow.
### Guidelines
- Enable the exact feature ID `CrestApps.OrchardCore.AI.Documents.Azure`.
- This feature depends on AI Documents through `ChatInteractionsConstants.Feature.ChatDocuments`; it enables the base document capability by dependency rather than replacing its processing pipeline.
- The feature changes only the `IDocumentFileStore` implementation. It does not create an index, generate embeddings, or select a vector-search backend.
- If either `ConnectionString` or `ContainerName` is empty, the feature logs an error and leaves the existing `IDocumentFileStore` registration unchanged rather than registering the Azure-backed replacement.View the complete source on GitHuborchardcore-ai-documents-azureai
When your agent uses it
Skill for indexing CrestApps Orchard Core AI Documents with Azure AI Search. Covers Azure AI Search index profiles, managed chunk mappings, the embedding deployment picked from the embedding slot (textEmbedding capability), vector retrieval, and scoped RAG results. Use this skill when requests mention AI Documents Azure AI Search, AIDocumentAzureAISearchIndexProfileHandler, AzureAISearchVectorSearchService, document vector indexes, or Azure AI Search document retrieval. Strong matches include work with CrestApps.OrchardCore.AI.Documents.AzureAI, IVectorSearchService, IDocumentIndexHandler, AddAzureAISearchIndexingSource, AzureAISearchIndexMetadata, and AIConstants.AIDocumentsIndexingTaskType.
What it loads into context
Frontmatter
178 tokensAlways available to the agent
SKILL.md
1,627 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Azure AI Search document retrieval
Files
SKILL.mdcore7,708 bytesSKILL.mdcore7,708 bytesSKILL.mdcore7,708 bytes
Read SKILL.md
# Orchard Core AI Documents Azure AI Search
## Configure Azure AI Search document retrieval
You are an Orchard Core expert. Configure Azure AI Search as the vector indexing and
retrieval backend for CrestApps AI Documents. Preserve the provider-managed mappings
and configure an embedding deployment before creating an index.
### Guidelines
- Enable the exact feature ID `CrestApps.OrchardCore.AI.Documents.AzureAI`.
- Its manifest depends on the AI Documents feature through `ChatInteractionsConstants.Feature.ChatDocuments`, `OrchardCore.Indexing`, and `OrchardCore.AzureAI`. The base AI Documents capability is enabled by dependency.
- Configure an Azure AI Search connection and an embedding deployment before creating the document index.
- Create the index at **Search → Indexing** with source **AI Documents (Azure AI Search)**.View the complete source on GitHuborchardcore-ai-documents-elasticsearch
When your agent uses it
Skill for indexing CrestApps Orchard Core AI Documents with Elasticsearch. Covers Elasticsearch index profiles, the embedding deployment picked from the embedding slot (textEmbedding capability), dense vector chunk mappings, k-nearest-neighbor retrieval, default search fields, and scoped RAG results. Use this skill when requests mention AI Documents Elasticsearch, AIDocumentElasticsearchIndexProfileHandler, ElasticsearchVectorSearchService, document vector indexing, or Elasticsearch document retrieval. Strong matches include work with CrestApps.OrchardCore.AI.Documents.Elasticsearch, IVectorSearchService, IDocumentIndexHandler, AddElasticsearchIndexingSource, ElasticsearchIndexMetadata, and AIConstants.AIDocumentsIndexingTaskType.
What it loads into context
Frontmatter
172 tokensAlways available to the agent
SKILL.md
1,528 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Elasticsearch document retrieval
Files
SKILL.mdcore7,397 bytesSKILL.mdcore7,397 bytesSKILL.mdcore7,397 bytes
Read SKILL.md
# Orchard Core AI Documents Elasticsearch
## Configure Elasticsearch document retrieval
You are an Orchard Core expert. Configure Elasticsearch as the vector indexing and
retrieval backend for CrestApps AI Documents. Use the provider-created index profile,
embedding dimensions, and reference-scoped retrieval rather than hand-written queries.
### Guidelines
- Enable the exact feature ID `CrestApps.OrchardCore.AI.Documents.Elasticsearch`.
- Its manifest depends on AI Documents through `ChatInteractionsConstants.Feature.ChatDocuments` and on `OrchardCore.Elasticsearch`; the base document feature is enabled by dependency.
- Create the index at **Search → Indexing** using **AI Documents (Elasticsearch)**.
- Create an embedding deployment that declares `textEmbedding` before creating or reindexing the profile.View the complete source on GitHuborchardcore-ai-documents-extractors
When your agent uses it
Skill for adding PDF and OpenXml text extraction to CrestApps Orchard Core AI Documents. Covers PDF, DOCX, XLSX, PPTX, processor registration, the PowerPoint, Word and PDF system agents, supported file types, upload processing, and extraction troubleshooting. Use this skill when requests mention AI Documents extractors, PDF document processing, OpenXml document processing, document text extraction, or document upload formats. Strong matches include work with CrestApps.OrchardCore.AI.Documents.Pdf, CrestApps.OrchardCore.AI.Documents.OpenXml, AddCoreAIPdfDocumentProcessing, AddCoreAIOpenXmlDocumentProcessing, AddCoreAIWordDocumentProcessing, PdfPig, and DocumentFormat.OpenXml.
What it loads into context
Frontmatter
182 tokensAlways available to the agent
SKILL.md
2,009 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure document text extraction
Files
SKILL.mdcore9,363 bytesSKILL.mdcore9,363 bytesSKILL.mdcore9,363 bytes
Read SKILL.md
# Orchard Core AI Documents PDF and OpenXml Extractors
## Configure document text extraction
You are an Orchard Core expert. Add optional PDF and Microsoft Open XML document
extractors to the CrestApps AI Documents processing pipeline. Enable only the file
format support required by the application, then combine it with a document context
and optional vector indexing backend.
### Guidelines
- Enable the exact feature IDs `CrestApps.OrchardCore.AI.Documents.Pdf` and `CrestApps.OrchardCore.AI.Documents.OpenXml` for PDF and Office Open XML support.
- These modules intentionally have no manifest dependency on the base AI Documents feature. They can be installed independently, but are useful only when an AI Documents capability processes uploaded files.
- An AI Documents context or backend enables the base capability by dependency. Examples include Chat Interactions, Profiles, Chat Sessions, Azure AI Search, and Elasticsearch.View the complete source on GitHuborchardcore-ai-file-sources
When your agent uses it
Skill for CrestApps AI File Sources in Orchard Core 4.0 (CrestApps.OrchardCore 3.0). Covers ingesting a folder of files on a schedule into a File AI data source, the per-tenant file-sources folder of the local connector, the FTP, FTPS and SFTP connectors, figure description with the vision slot and the utility slot, the File Source Ingestion background task and Read now, the CrestApps AI FileSources configuration section with FileSourceOptions, the AIFileSources admin list, the ManageFileSources permission, and custom ingestion connectors. Use it for CrestApps.OrchardCore.AI.FileSources, CrestApps.OrchardCore.AI.FileSources.Ftp, CrestApps.OrchardCore.AI.FileSources.Sftp, FileSource, FileSourceMetadata, FileSystemFileSourceMetadata, RemoteFileSourceMetadata, FtpConnectionMetadata, SftpConnectionMetadata, FigureProcessingMode, ITenantFileSourceRoot, IIngestionConnector, AddCoreIngestionConnector, IIngestionRunService, and FileSourceRunBackgroundTask.
What it loads into context
Frontmatter
258 tokensAlways available to the agent
SKILL.md
2,670 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Ingest folders of files into the AI knowledge base
Files
SKILL.mdcore11,334 bytesSKILL.mdcore11,334 bytesSKILL.mdcore11,334 bytesSKILL.mdcore11,334 bytesSKILL.mdcore11,334 bytesSKILL.mdcore11,334 bytesSKILL.mdcore11,334 bytesSKILL.mdcore11,334 bytesSKILL.mdcore11,334 bytesSKILL.mdcore11,334 bytesSKILL.mdcore11,334 bytesSKILL.mdcore11,334 bytesSKILL.mdcore11,334 bytesSKILL.mdcore11,334 bytes
Read SKILL.md
# Orchard Core AI File Sources
## Ingest folders of files into the AI knowledge base
You are an Orchard Core expert. Generate configuration and code for CrestApps file sources: a **file source** reads a folder on a schedule and ingests every file into a **File** AI data source, storing each file's text, figures, charts, and tables as separately retrievable knowledge. AI profiles attached to that data source answer from the folder and can cite the figure they used.
### Guidelines
- Use file sources for files that already live somewhere (a server folder, an FTP drop, an SFTP export). Files users upload in a chat belong to AI Documents (see `orchardcore-ai-documents`).
- `CrestApps.OrchardCore.AI.FileSources` depends on `CrestApps.OrchardCore.AI.DataSources` and `CrestApps.OrchardCore.AI.Documents`, and ships the local file-system connector.
- The FTP and SFTP features only add ingestion connectors. They do not start an MCP server; the MCP FTP and SFTP resource features are separate (see `orchardcore-ai-mcp-resources`).
- A file source targets a **File** data source, which needs a knowledge base index with an embedding deployment (see `orchardcore-ai-data-sources`).
- The local connector can only read the tenant's own `App_Data/Sites/{TenantName}/file-sources` folder. That root is computed from the tenant identity and cannot be widened by configuration or by a request.
- Figures are described only when a deployment declaring `imageInput` fills the `vision` slot, or is named on the source.View the complete source on GitHuborchardcore-ai-mcp
When your agent uses it
Overview skill for Model Context Protocol (MCP) support in Orchard Core through the CrestApps.OrchardCore.AI.Mcp module. Covers choosing between the MCP client features (CrestApps.OrchardCore.AI.Mcp for remote SSE servers, CrestApps.OrchardCore.AI.Mcp.Stdio for local process servers) and the MCP Server feature (CrestApps.OrchardCore.AI.Mcp.Server with opt-in tool exposure), the FTP and SFTP resource modules, the Model Context Protocol admin screens (MCP Hosts, Prompts, Resources), permissions, the McpConnection, McpPrompt and McpResource recipe steps, deployment steps, and a combined setup recipe. Use this skill when requests mention Orchard Core MCP in general, configuring MCP integration, picking the right MCP feature, or an end-to-end MCP setup, then switch to orchardcore-ai-mcp-client, orchardcore-ai-mcp-server or orchardcore-ai-mcp-resources for details.
What it loads into context
Frontmatter
235 tokensAlways available to the agent
SKILL.md
1,564 tokensWhen the skill is activated
Reference documents
1,676 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Pick the right feature
- Guidelines
- Admin screens
- Recipe and deployment steps
- Combined setup
- Upgrading from 2.x
- Discover MCP servers
Files
SKILL.mdcore6,166 bytesreferences/ai-mcp-examples.mddoc7,234 bytes
Read SKILL.md
# Orchard Core Model Context Protocol (MCP)
The [Model Context Protocol](https://modelcontextprotocol.io/introduction) is an open standard for connecting LLM applications to tools and data. The `CrestApps.OrchardCore.AI.Mcp` package lets Orchard Core act as an MCP **client** (use tools hosted elsewhere) and as an MCP **server** (offer Orchard Core tools, prompts, and resources to other AI apps).
## Pick the right feature
| Goal | Feature ID | Skill |
|---|---|---|
| Call tools on a remote MCP server over HTTP | `CrestApps.OrchardCore.AI.Mcp` | `orchardcore-ai-mcp-client` |
| Run a local MCP server process (for example Docker) | `CrestApps.OrchardCore.AI.Mcp.Stdio` | `orchardcore-ai-mcp-client` |
| Let IDEs and AI apps call Orchard Core tools, prompts, resources | `CrestApps.OrchardCore.AI.Mcp.Server` | `orchardcore-ai-mcp-server` |
| Expose FTP/FTPS files as MCP resources | `CrestApps.OrchardCore.AI.Mcp.Resources.Ftp` | `orchardcore-ai-mcp-resources` |
| Expose SFTP files as MCP resources | `CrestApps.OrchardCore.AI.Mcp.Resources.Sftp` | `orchardcore-ai-mcp-resources` |
View the complete source on GitHuborchardcore-ai-mcp-client
When your agent uses it
Skill for connecting Orchard Core to external MCP servers with the CrestApps MCP client features CrestApps.OrchardCore.AI.Mcp (remote SSE and HTTP transport) and CrestApps.OrchardCore.AI.Mcp.Stdio (local process transport). Covers the MCP Hosts admin screen, SseMcpConnectionMetadata authentication types (Anonymous, ApiKey, Basic, OAuth2ClientCredentials, OAuth2PrivateKeyJwt, OAuth2Mtls, CustomHeaders), StdioMcpConnectionMetadata for Docker-based servers, the McpConnection recipe step with its required Source value, deployment export with secrets cleared, encrypted credentials, the ManageMcpConnections permission, and assigning MCP connections to AI profiles, profile templates, chat interactions and the AI Completion using Direct Config workflow task. Use this skill when requests mention Orchard Core MCP client, MCP connections, MCP Hosts, connecting to a remote MCP server, running an MCP server in Docker, or troubleshooting MCP connection imports.
What it loads into context
Frontmatter
228 tokensAlways available to the agent
SKILL.md
1,719 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Enable the features
- Add a remote connection
- Add a local (stdio) connection
- Recipe step
- Assign connections
- Admin list
- Upgrading from 2.x
- Troubleshooting
Files
SKILL.mdcore7,184 bytesSKILL.mdcore7,184 bytesSKILL.mdcore7,184 bytes
Read SKILL.md
# Orchard Core MCP Client
The MCP client features let AI profiles, chat interactions, and workflow tasks call tools, prompts, and resources hosted by external MCP servers.
## Guidelines
- `CrestApps.OrchardCore.AI.Mcp` adds the client runtime and the remote **Server-Sent Events** transport (source `sse`). It depends on `CrestApps.OrchardCore.AI` and `CrestApps.OrchardCore.Resources`.
- `CrestApps.OrchardCore.AI.Mcp.Stdio` adds the local process transport (source `stdIo`, matched case-insensitively). Enable it only on hosts that may start local processes.
- Install `CrestApps.OrchardCore.AI.Mcp` in the web/startup project.
- Connections are managed under **Artificial Intelligence → Model Context Protocol → MCP Hosts** (permission `ManageMcpConnections`).
- Credentials are encrypted at rest with ASP.NET Core Data Protection and cleared from deployment exports. Never commit plaintext secrets in recipes.
## Enable the features
View the complete source on GitHuborchardcore-ai-mcp-resources
When your agent uses it
Skill for exposing FTP, FTPS and SFTP files as MCP resources with the CrestApps Orchard Core modules CrestApps.OrchardCore.AI.Mcp.Resources.Ftp and CrestApps.OrchardCore.AI.Mcp.Resources.Sftp, which extend the MCP Server feature. Covers FtpConnectionMetadata and SftpConnectionMetadata fields, the ftp and sftp resource types with the path URI variable, creating resources under Model Context Protocol, Resources, the McpResource recipe step and its limits for connection metadata, encrypted credentials, IMcpResourceHandler export clearing, AddCoreAIFtpMcpResources and AddCoreAISftpMcpResources, and how these differ from the AI File Sources FTP and SFTP connectors used for document ingestion. Use this skill when requests mention MCP FTP resources, MCP SFTP resources, remote file MCP resources, FluentFTP or SSH.NET resources, or troubleshooting file-transfer MCP resources.
What it loads into context
Frontmatter
220 tokensAlways available to the agent
SKILL.md
2,500 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure file-transfer MCP resources
Files
SKILL.mdcore10,953 bytesSKILL.mdcore10,953 bytesSKILL.mdcore10,953 bytesSKILL.mdcore10,953 bytesSKILL.mdcore10,953 bytesSKILL.mdcore10,953 bytesSKILL.mdcore10,953 bytes
Read SKILL.md
# Orchard Core MCP FTP and SFTP Resources
## Configure file-transfer MCP resources
You are an Orchard Core expert. Configure remote file content as MCP resources using
the CrestApps FTP/FTPS and SFTP modules. Use the built-in source registrations,
connection metadata, deployment-safe credential handling, and URI patterns.
### Guidelines
- Enable `CrestApps.OrchardCore.AI.Mcp.Resources.Ftp` for FTP and FTPS resources.
- Enable `CrestApps.OrchardCore.AI.Mcp.Resources.Sftp` for SSH File Transfer Protocol resources.
- Both feature IDs depend on the MCP server feature `CrestApps.OrchardCore.AI.Mcp.Server` (`McpPermissions.Feature.Server`), which is enabled automatically as a dependency. See `orchardcore-ai-mcp-server`.
- The FTP module registers the source through `AddCoreAIFtpMcpResources`; the SFTP module uses `AddCoreAISftpMcpResources`.View the complete source on GitHuborchardcore-ai-mcp-server
When your agent uses it
Skill for the CrestApps Orchard Core MCP Server feature (CrestApps.OrchardCore.AI.Mcp.Server). Covers the Streamable HTTP endpoint at /mcp, OpenId, ApiKey and None authentication, opt-in tool exposure on the MCP Server settings card (McpServerSettings loaded into McpServerOptions with ExposeAllTools, Tools, ExposeAllAgents and Agents), exposing tool instances such as documentation search to MCP clients, MCP prompts and resources with the McpPrompt and McpResource recipe steps, built-in resource types, custom resource types with AddCoreAIMcpResourceType and McpResourceTypeHandlerBase, the AccessMcpServer, ManageMcpServerSettings, ManageMcpPrompts and ManageMcpResources permissions, live IOptionsMonitor settings, and upgrading from releases that exposed every tool. Use this skill when requests mention Orchard Core MCP Server, exposing Orchard Core tools to Claude, VS Code or Copilot, McpServerOptions, ExposeAllTools, MCP prompts or resources, or tools that do not appear for MCP clients.
What it loads into context
Frontmatter
255 tokensAlways available to the agent
SKILL.md
3,285 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Enable the feature
- Endpoint
- Tool exposure
- Authentication
- Client configuration
- MCP prompts
- MCP resources
- Custom resource type
- Deployment
- Admin lists
- Upgrading from 2.x
- Troubleshooting
Files
SKILL.mdcore13,705 bytesSKILL.mdcore13,705 bytesSKILL.mdcore13,705 bytes
Read SKILL.md
# Orchard Core MCP Server
The MCP Server feature exposes Orchard Core AI tools, tool instances, prompts, and resources to external MCP clients (IDEs, desktop agents, other AI apps) over the MCP **Streamable HTTP** transport.
## Guidelines
- Feature ID `CrestApps.OrchardCore.AI.Mcp.Server`, from the `CrestApps.OrchardCore.AI.Mcp` package. It depends only on `CrestApps.OrchardCore.AI`. Install the package in the web/startup project.
- **Tool exposure is opt-in.** Nothing is listed or callable until you select tools and tool instances on the **MCP Server** card, list them in `McpServerOptions.Tools`, or set `ExposeAllTools` to `true`. Prompts and resources are not affected by this switch.
- System tools and hidden tools are never exposed, even with `ExposeAllTools`. Only *selectable* tools (registered with `.Selectable()`) can be exposed.
- Agent profiles are gated separately through `ExposeAllAgents` and `Agents` (configuration only).
- Exposed tools still run Orchard Core permission checks for the calling identity.
- Use `OpenId` in production. `None` is for local development only.
- The settings are read through `IOptionsMonitor<McpServerOptions>`, so saving the card takes effect without a tenant reload.
View the complete source on GitHuborchardcore-ai-memory
When your agent uses it
Skill for persistent, user-scoped AI Memory in Orchard Core 4.0 with CrestApps.OrchardCore 3.0. Covers the memory index with its embedding deployment from the embedding slot, the Memory settings (AIMemorySettings, AIMemoryOptions and ChatInteractionMemoryOptions read through IOptionsMonitor), enabling memory on AI profiles, profile templates and chat interactions through MemoryMetadata, the save, search, list and remove memory tools, preemptive memory retrieval, clearing memory with ClearAIMemory and ClearAIMemoryForOthers, and the deferred indexing pipeline. Use it for CrestApps.OrchardCore.AI.Memory, CrestApps.OrchardCore.AI.Memory.AzureAI, CrestApps.OrchardCore.AI.Memory.Elasticsearch, AIMemoryEntry, IAIMemoryStore, AIMemoryIndexingService, IMemoryVectorSearchService, MemoryConstants, AlterMemoryMetadata, and EnablePreemptiveMemoryRetrieval.
What it loads into context
Frontmatter
225 tokensAlways available to the agent
SKILL.md
2,480 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure persistent user memory
Files
SKILL.mdcore10,786 bytesSKILL.mdcore10,786 bytes
Read SKILL.md
# Orchard Core AI Memory
## Configure persistent user memory
You are an Orchard Core expert. Generate configuration, recipes, and code that let the AI remember durable, non-sensitive facts about the signed-in user across conversations.
### Guidelines
- Memory works only for authenticated users. Every read and write is filtered by the user's `ClaimTypes.NameIdentifier`; anonymous users get no memory tools.
- `CrestApps.OrchardCore.AI.Memory` is `EnabledByDependencyOnly`; it depends on `CrestApps.OrchardCore.AI.Chat.Core` and `OrchardCore.Indexing`. Enable a provider feature and it comes along.
- Each memory is a record in the tenant store (`AIMemoryEntry`) plus one document in the configured **master memory index** (an index profile of type `AIMemory`).
- The memory index names an embedding deployment from the `embedding` slot, so the deployment must declare `textEmbedding`. It is locked once the index exists.
- Memory is for preferences, projects, recurring topics, and stable background. Never store passwords, keys, tokens, card or Social Security numbers, private keys, or connection strings; the save tool rejects obvious sensitive patterns.
- Read the options through `IOptionsMonitor<AIMemoryOptions>` and `IOptionsMonitor<ChatInteractionMemoryOptions>`; saving the Memory settings no longer releases the tenant.View the complete source on GitHuborchardcore-ai-memory-azureai
When your agent uses it
Skill for indexing CrestApps Orchard Core AI Memory with Azure AI Search. Covers managed memory index mappings, embedding dimensions, user-scoped vector retrieval, index profiles, and Azure AI Search operations. Use this skill when requests mention AI Memory Azure AI Search, AIMemoryAzureAISearchIndexProfileHandler, AzureAISearchMemoryVectorSearchService, memory vector indexes, or Azure user-memory retrieval. Strong matches include work with CrestApps.OrchardCore.AI.Memory.AzureAI, IMemoryVectorSearchService, AIMemoryAzureAISearchDocumentIndexHandler, AddAzureAISearchIndexingSource, AzureAISearchIndexMetadata, and MemoryConstants.IndexingTaskType.
What it loads into context
Frontmatter
168 tokensAlways available to the agent
SKILL.md
1,604 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Azure AI Search memory indexing
Files
SKILL.mdcore7,722 bytesSKILL.mdcore7,722 bytes
Read SKILL.md
# Orchard Core AI Memory Azure AI Search
## Configure Azure AI Search memory indexing
You are an Orchard Core expert. Configure Azure AI Search for persistent user-memory
vector indexing and semantic retrieval. Maintain the strict authenticated-user filter
and use the provider-managed profile mappings.
### Guidelines
- Enable the exact feature ID `CrestApps.OrchardCore.AI.Memory.AzureAI`.
- Its manifest depends on `CrestApps.OrchardCore.AI.Memory`, `OrchardCore.Indexing`, and `OrchardCore.AzureAI`; the base AI Memory feature is enabled by dependency.
- Create **AI Memory (Azure AI Search)** from **Search → Indexing**, select its embedding deployment, then choose it in **Settings → Artificial Intelligence → Memory**.
- Memory remains authenticated-user scoped even though all users can occupy a shared external index.View the complete source on GitHuborchardcore-ai-memory-elasticsearch
When your agent uses it
Skill for indexing CrestApps Orchard Core AI Memory with Elasticsearch. Covers memory field mappings, dense vectors, k-nearest-neighbor retrieval, default query fields, user isolation, and Elasticsearch operations. Use this skill when requests mention AI Memory Elasticsearch, AIMemoryElasticsearchIndexProfileHandler, ElasticsearchMemoryVectorSearchService, memory vector indexes, or Elasticsearch user-memory retrieval. Strong matches include work with CrestApps.OrchardCore.AI.Memory.Elasticsearch, IMemoryVectorSearchService, AIMemoryElasticsearchDocumentIndexHandler, AddElasticsearchIndexingSource, ElasticsearchIndexMetadata, and MemoryConstants.IndexingTaskType.
What it loads into context
Frontmatter
158 tokensAlways available to the agent
SKILL.md
1,566 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Elasticsearch memory indexing
Files
SKILL.mdcore7,826 bytesSKILL.mdcore7,826 bytes
Read SKILL.md
# Orchard Core AI Memory Elasticsearch
## Configure Elasticsearch memory indexing
You are an Orchard Core expert. Configure Elasticsearch as the persistent AI Memory
vector backend while maintaining user isolation, stable provider mappings, and
embedding compatibility.
### Guidelines
- Enable the exact feature ID `CrestApps.OrchardCore.AI.Memory.Elasticsearch`.
- Its manifest depends on `CrestApps.OrchardCore.AI.Memory` and `OrchardCore.Elasticsearch`; the base memory feature is enabled by dependency.
- Create **AI Memory (Elasticsearch)** from **Search → Indexing**, select an embedding deployment, and choose it in **Settings → Artificial Intelligence → Memory**.
- The provider is registered as keyed `IMemoryVectorSearchService` using `ElasticsearchConstants.ProviderName`.View the complete source on GitHuborchardcore-ai-model-capabilities
When your agent uses it
Skill for AI deployment model capabilities, model parameters and deployment slots in CrestApps.OrchardCore 3.0, which replace the removed AIDeploymentPurpose and AIDeploymentType. Covers the Model capabilities card on AI deployments, AIDeploymentMetadata Features and Parameters in recipes and appsettings.json, AIDeploymentFeatureNames such as textGeneration, toolCalling, textEmbedding and realtime, the reasoningEffort parameter, AIDeploymentSlotNames, IAIDeploymentManager.GetAllBySlotAsync and ResolveSlotAsync, GetSelectListBySlotAsync, IAIDeploymentCapabilityService, AIDeploymentParametersMetadata on profiles, AddAIDeploymentFeature, AddAIDeploymentParameter and AddAIDeploymentSlot, the read-time projection of legacy Purpose values and the stored-deployment capability migration. Use this skill when requests mention AI deployment capabilities, deployment slots, deployment purpose migration, model parameters, reasoning effort, or picking a chat, utility, embedding, vision or speech deployment in code.
What it loads into context
Frontmatter
246 tokensAlways available to the agent
SKILL.md
3,196 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Capabilities
- Slots
- Declare capabilities
- Pick and resolve deployments in code
- Register features, parameters and slots
- Upgrading from deployment purposes
- Troubleshooting
- Related skills
Files
SKILL.mdcore13,836 bytes
Read SKILL.md
# Orchard Core AI Model Capabilities and Slots
A deployment says what its model can do (**capabilities**, also called trained features) and which
options it exposes (**model parameters**). Where a deployment gets used is a **slot**: each picker and each
resolver asks for a slot, and only deployments with the slot's required capability qualify. This replaces
the deployment *purpose* of 2.x. Everything here ships with the base `CrestApps.OrchardCore.AI` feature;
the types come from CrestApps.Core (`CrestApps.Core.AI.Models`, `CrestApps.Core.AI.Deployments`,
`CrestApps.Core.AI.Capabilities`).
## Guidelines
- Declare only what the model was trained for. An undeclared capability is never offered or sent; a
falsely declared one is sent and rejected by the provider.
- At least one capability is required on every deployment.View the complete source on GitHuborchardcore-ai-personas
When your agent uses it
Skill for AI Personas in Orchard Core with the CrestApps AI module. Covers the CrestApps.OrchardCore.AI.Personas feature, reusable linked characters with instructions, assistant name, language, voice and avatar, the Personas catalog and ManageAIPersonas permission, linking a persona from AI profiles, profile templates, chat interactions and the AI completion with configuration workflow task, the persona block in the system message, voice resolution for chat, realtime and Contact Center calls, the AIPersonas recipe step and AIPersonaDeploymentStep, PersonaId and AIPersonaMetadata on profiles, seeding personas with IAIPersonaManager, and shipping persona files with AddCoreAIPersonasFromAssembly or an IAIPersonaProvider. Use this skill when requests mention Orchard Core AI personas, assistant name, assistant avatar, persona voice, or persona recipes. Strong matches include AIPersona, IAIPersonaManager, IAIPersonaProvider, IAIPersonaResolver, and AIPersonaMetadata.
What it loads into context
Frontmatter
243 tokensAlways available to the agent
SKILL.md
2,208 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure AI Personas
Files
SKILL.mdcore9,673 bytes
Read SKILL.md
# Orchard Core AI Personas - Prompt Templates
## Configure AI Personas
You are an Orchard Core expert. Generate recipes and code that give AI profiles, profile templates, chat interactions and workflow tasks a reusable persona with the CrestApps AI module.
### Guidelines
- Enable `CrestApps.OrchardCore.AI.Personas` (**AI Personas**, ships in the `CrestApps.OrchardCore.AI` package, depends on `CrestApps.OrchardCore.AI`). Install the package in the web/startup project.
- A persona answers **who** the assistant is: personality, tone, assistant name, language, voice and avatar. The profile's system instructions and prompt templates still answer **what**: the task, rules and tools.
- A persona stays **linked**. Unlike a profile template, which is copied when used, an edit to a persona applies to every profile and interaction that links to it from the next message.
- Profiles, templates and interactions link to the persona's technical `Name`, which cannot change once saved. One persona per item, and it is optional.
- A tenant starts with no personas. Create them in the admin, import them with the `AIPersonas` recipe step, or register them in code.
- Without the feature, stored links are kept but ignored.View the complete source on GitHuborchardcore-ai-profile-builder
When your agent uses it
Skill for the AI Profile Builder in Orchard Core with the CrestApps AI Chat Interactions module. Covers the CrestApps.OrchardCore.AI.Chat.Interactions.ProfileBuilder feature that builds an AI profile by role-play, the Feedback, regenerate and Looks good actions, the coach deployment and the profile-builder-coach and profile-builder-replay-judge templates, revisions, replay with Pass, Fail and Unknown verdicts, saving as a new AI profile or updating the source profile, voice role-play, the ProfileBuilderSession ledger and ProfileBuilderSessionIndex, the AIProfileBuilderSessions admin list, the ManageAIProfiles and EditChatInteractions permissions, and the ProfileBuilderCoaching and ProfileBuilderReplay usage purposes. Use this skill when requests mention Orchard Core Profile Builder, building an AI profile from feedback, or tuning a system message from conversations. Strong matches include ProfileBuilderController, ProfileBuilderService, ProfileBuilderCoach, and ProfileBuilderInteractionMetadata.
What it loads into context
Frontmatter
223 tokensAlways available to the agent
SKILL.md
1,697 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Build AI Profiles by Role-Play
Files
SKILL.mdcore7,947 bytesSKILL.mdcore7,947 bytesSKILL.mdcore7,947 bytes
Read SKILL.md
# Orchard Core AI Profile Builder - Prompt Templates
## Build AI Profiles by Role-Play
You are an Orchard Core expert. Help set up, use and troubleshoot the CrestApps AI Profile Builder, which turns feedback on role-played conversations into an AI profile's system message and parameters.
### Guidelines
- Enable `CrestApps.OrchardCore.AI.Chat.Interactions.ProfileBuilder` (**AI Profile Builder**). It ships in the `CrestApps.OrchardCore.AI.Chat.Interactions` package and depends on `CrestApps.OrchardCore.AI.Chat.Interactions`.
- A user needs both `ManageAIProfiles` and `EditChatInteractions`. The menu item **Artificial Intelligence → Profile Builder** is guarded by `ManageAIProfiles`.
- The builder suits conversation-driven profiles, such as automated SMS conversations or phone calls, whose behavior depends on the system message.
- A builder session is a chat interaction, so role-play gets everything an interaction has: streaming, tools, data sources, documents, the speech-to-text plus text-to-speech conversation mode and realtime voice. See `orchardcore-ai-chat-interactions`.
- Choose a capable **Coach deployment**: it rewrites the instructions. By default it is the session's chat deployment.
- Documents attached to the session are not copied to the profile.View the complete source on GitHuborchardcore-ai-profile-templates
When your agent uses it
Skill for reusable AI profile templates in CrestApps.OrchardCore 3.0. Covers the Templates screen and ManageAIProfileTemplates permission, the Profile and SystemPrompt template sources, the scenario-first New AI Profile picker and setup step (ProfileWizardController, ai/profile/new routes), the shipped starter scenarios, template files in Templates/Profiles and App_Data/AITemplates/Profiles, profile template front matter including Featured, Icon, Order and RequiresFeatures (ProfileScenarioMetadata), IAIProfileTemplateApplicationHandler and AIProfileTemplateAppliedContext, the AIProfileTemplate and CreateAIProfileFromTemplate recipe steps with ProfileTemplateMetadata, the AI Profile Templates deployment step, and upgrading from the removed Apply Templates card. Use this skill when requests mention AI profile templates, AIProfileTemplate, CreateAIProfileFromTemplate, New AI Profile wizard, profile starting points, featured scenarios, or provisioning AI profiles from templates.
What it loads into context
Frontmatter
216 tokensAlways available to the agent
SKILL.md
2,264 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Basics
- The New AI Profile flow
- Template files
- Finish a profile built from a template
- Recipes
- Capabilities on templates
- Upgrading from 2.x
- Related skills
Files
SKILL.mdcore10,270 bytesSKILL.mdcore10,270 bytesSKILL.mdcore10,270 bytes
Read SKILL.md
# Orchard Core AI Profile Templates
An AI profile template is a reusable starting point for AI profiles. It is how every new profile begins in
3.0: **Add Profile** opens the **New AI Profile** picker, the user picks a template (or **Blank profile**),
fills a short setup step, and the profile is created from the template on the server.
## Basics
| Item | Value |
| --- | --- |
| Feature | `CrestApps.OrchardCore.AI` (base AI module) |
| Admin | **Artificial Intelligence > Templates** (list `AITemplates`), permission `ManageAIProfileTemplates` |
| Manager | `INamedSourceCatalogManager<AIProfileTemplate>` (`IAIProfileTemplateManager`); `AIProfileTemplate` is a `SourceCatalogEntry` |
| Sources (`AITemplateSources`) | `Profile` (creates profiles) and `SystemPrompt` (an instruction fragment; see `orchardcore-ai-prompting`) |View the complete source on GitHuborchardcore-ai-prompting
When your agent uses it
Skill for the CrestApps.OrchardCore.AI.Prompting feature (AI Prompt Templates) in CrestApps.OrchardCore 3.0. Covers feature-aware prompt file discovery under Templates/Prompts, prompt front matter (Title, Description, Category, IsListable, parameters), the Prompt templates picker on AI profiles, profile templates, chat interactions and the AI Completion using Direct Config workflow task, PromptTemplateMetadata and PromptTemplateSelectionEntry in recipes, saved System Prompt templates rendered by AIProfileSystemPromptTemplateProvider under their technical names, PromptTemplateSelectionService and ITemplateService, OrchardCoreTemplateService, and the renderAITemplate scripting method. Use this skill when requests mention Orchard Core AI prompt templates, reusable system prompts, Templates/Prompts, prompt selection, PromptTemplateMetadata, System Prompt templates, renderAITemplate, or ITemplateService in Orchard Core.
What it loads into context
Frontmatter
213 tokensAlways available to the agent
SKILL.md
1,711 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Feature
- Author prompt files
- Select templates on profiles and interactions
- Saved System Prompt templates
- Render templates from code and scripts
- Upgrading from 2.x
- Troubleshooting
- Related skills
Files
SKILL.mdcore7,722 bytesSKILL.mdcore7,722 bytes
Read SKILL.md
# Orchard Core AI Prompt Templates
Prompt templates are reusable, Liquid-rendered instruction fragments. Editors pick them on AI profiles,
profile templates, chat interactions and the direct-config workflow task; they render, in order, before the
entity's own system message.
| Need | Use |
| --- | --- |
| A reusable instruction fragment shipped with code | A prompt file under `Templates/Prompts/` in a module |
| A reusable instruction fragment managed by administrators | A **System Prompt** template under **Artificial Intelligence > Templates** |
| Reusable defaults for creating whole profiles | A **Profile** template; see `orchardcore-ai-profile-templates` |
## Feature
View the complete source on GitHuborchardcore-ai-providers
When your agent uses it
Skill for the CrestApps.OrchardCore 3.0 AI provider modules. Covers CrestApps.OrchardCore.OpenAI (OpenAI and OpenAI-compatible services such as DeepSeek, Gemini and vLLM), CrestApps.OrchardCore.OpenAI.Azure (Azure OpenAI plus contained AzureSpeech deployments and GStreamer), CrestApps.OrchardCore.AzureAIInference (GitHub Models), CrestApps.OrchardCore.Ollama, the built-in CascadedRealtime deployment provider, provider connections and AIDeployment recipes with AIDeploymentMetadata capabilities, the AzureClient retry and logging options, how the Claude and Copilot orchestrators differ from providers, and writing a custom provider with AIClientProviderBase, IAIClientMarker, ProviderAICompletionClient, AddCoreAICompletionClient, AddCoreAIDeploymentProvider and AddCoreAIConnectionSource. Use this skill when requests mention AI providers, OpenAI setup, Azure OpenAI setup, Azure AI Speech, GitHub Models, Ollama, OpenAI-compatible endpoints, provider deployments, or adding a new AI provider to Orchard Core.
What it loads into context
Frontmatter
259 tokensAlways available to the agent
SKILL.md
3,509 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Providers
- OpenAI
- Azure OpenAI
- Azure AI Inference (GitHub Models)
- Ollama
- Orchestrators are not providers
- Write a custom provider
- Upgrading from 2.x
- Related skills
Files
SKILL.mdcore14,454 bytesSKILL.mdcore14,454 bytes
Read SKILL.md
# Orchard Core AI Providers
A provider module teaches the CrestApps AI suite to talk to one AI platform: it creates chat clients,
embedding generators, image generators and speech clients, registers a connection source and a deployment
provider, and contributes its connection editor. Configure a **connection** (credentials), then
**deployments** (models with declared capabilities), then point profiles or site defaults at deployments.
## Guidelines
- Install provider packages in the web/startup project and enable the provider feature; it enables
`CrestApps.OrchardCore.AI`. Enable `CrestApps.OrchardCore.AI.ConnectionManagement` for the connection UI
and the `AIProviderConnections` recipe step.
- Declare each deployment's capabilities under `Properties.AIDeploymentMetadata.Features`. There is no
`Purpose` and no `IsDefault`; defaults are site settings (see `orchardcore-ai-model-capabilities`).View the complete source on GitHuborchardcore-ai-realtime-voice
When your agent uses it
Skill for realtime speech-to-speech voice in Orchard Core with the CrestApps AI Chat and AI Chat Interactions modules. Covers deployments that declare the realtime capability, the realtime slot, Conversation chat mode with the Conversation deployment (ConversationDeploymentName on profiles and chat interactions), the resolution order and the speech-to-text plus text-to-speech fallback, the removal of ChatMode.Realtime and RealtimeDeploymentName, cascaded realtime deployments with the CascadedRealtime provider and CascadedRealtimeMetadata, WebRTC with WebSocket fallback, RealtimeTransportOptions (turn detection, session limits, knowledge grounding, STUN and TURN), per-tenant Cloudflare TURN credentials, realtime voices, and the realtime hub methods. Use this skill when requests mention Orchard Core realtime voice, speech-to-speech, WebRTC, TURN, barge-in, or cascaded realtime. Strong matches include IRealtimeOrchestrator, RealtimeTransportOptions, CloudflareTurnOptions, and StartRealtimeWebRtc.
What it loads into context
Frontmatter
232 tokensAlways available to the agent
SKILL.md
2,769 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Realtime Voice
Files
SKILL.mdcore12,144 bytes
Read SKILL.md
# Orchard Core AI Realtime Voice - Prompt Templates
## Configure Realtime Voice
You are an Orchard Core expert. Generate configuration and recipes for live spoken AI conversations in the CrestApps AI Chat and AI Chat Interactions surfaces.
### Guidelines
- Realtime voice is part of `CrestApps.OrchardCore.AI.Chat` (AI Chat sessions and widgets) and `CrestApps.OrchardCore.AI.Chat.Interactions`. Both register the WebRTC transport (`AddWebRtcRealtimeTransport`, package `CrestApps.Core.AI.WebRTC`) and per-tenant Cloudflare TURN (`AddTenantCloudflareRealtimeTurn`). No extra feature is needed.
- A realtime deployment is one whose model declares the `realtime` capability in `Properties.AIDeploymentMetadata.Features`, or a **Cascaded Realtime** deployment. See `orchardcore-ai-model-capabilities`.
- One chat thread carries both typed and spoken turns. In **Conversation** chat mode the surface shows a voice toggle beside a working message box.
- The **Chat deployment** is only the text model. It lists text-capable deployments and answers typed messages, including those typed during a voice session. The speech-to-speech model goes in the **Conversation deployment**.
- How a conversation is carried is resolved, never stored. There is no per-profile switch back to the cascade.
- Tools, data sources, the system message and turn persistence all apply to the spoken conversation, because turns run through `IRealtimeOrchestrator`.View the complete source on GitHuborchardcore-ai-response-handlers
When your agent uses it
Skill for implementing CrestApps chat response handlers in Orchard Core with CrestApps.OrchardCore 3.0. Covers IChatResponseHandler and IChatResponseHandlerResolver, ChatResponseHandlerContext and AssistantAppearance, streaming and deferred results, the AI handler fallback in Conversation chat mode, ResponseHandlerProfileSettings.InitialResponseHandlerName on AI profiles and profile templates, external relay contracts (IExternalChatRelay, IExternalChatRelayManager), IChatNotificationSender notifications, and handler registration. Use this skill when requests mention Orchard Core chat response handlers, IChatResponseHandler, ChatResponseHandlerResult, streaming responses, deferred chat replies, initial response handler, IExternalChatRelay, ChatNotification, or live-agent handoff.
What it loads into context
Frontmatter
180 tokensAlways available to the agent
SKILL.md
2,032 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Route a chat prompt to a handler
- Start new sessions on a handler
- Return streaming or deferred output
- Send transient chat notifications
- Use the external relay contracts exactly
- Transfer through an AI tool
- Operational checklist
- Related skills
Files
SKILL.mdcore9,742 bytes
Read SKILL.md
# Orchard Core Chat Response Handlers
## Route a chat prompt to a handler
`IChatResponseHandler` is a shared CrestApps.Core contract used by Orchard chat
sessions and chat interactions. A handler either returns response updates now or
defers the assistant response until an external system supplies it.
```csharp
using CrestApps.Core.AI.ResponseHandling;
namespace MyCompany.OrchardCore.Chat;
public sealed class LiveAgentResponseHandler : IChatResponseHandlerView the complete source on GitHuborchardcore-ai-tool-instances
When your agent uses it
Skill for CrestApps Orchard Core AI Tool Instances (CrestApps.OrchardCore.AI.ToolInstances), administrator-created functions built from registered sources. Covers the sources http-api-request (HttpApiRequestToolSettings, authentication types, declared parameters), sitemap-documentation, search-index-documentation, algolia-documentation, website-search (live site search API) and data-source-search (vector search over an AI data source), assigning instances to profiles, templates, chat interactions, post-session processing and the direct-config workflow task, exposing instances to MCP clients, the ManageAIToolInstances and AccessAITool_{functionName} permissions, the AIToolInstances recipe and deployment steps, IAIToolInstanceHandler secret stripping, and custom sources with AddAIToolInstanceSource and AIToolInstancesDisplayDriverBase. Use this skill when requests mention AI tool instances, HTTP API tools, documentation or website search tools, data source search tools, or docs for MCP clients.
What it loads into context
Frontmatter
228 tokensAlways available to the agent
SKILL.md
3,251 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Built-in sources
- Assign instances
- Permissions
- Recipe and deployment
- Register a custom source
- Add the selector to another model
- Admin list
- Upgrading from 2.x
- Troubleshooting
Files
SKILL.mdcore14,639 bytesSKILL.mdcore14,639 bytesSKILL.mdcore14,639 bytesSKILL.mdcore14,639 bytesSKILL.mdcore14,639 bytesSKILL.mdcore14,639 bytesSKILL.mdcore14,639 bytesSKILL.mdcore14,639 bytesSKILL.mdcore14,639 bytesSKILL.mdcore14,639 bytesSKILL.mdcore14,639 bytesSKILL.mdcore14,639 bytesSKILL.mdcore14,639 bytesSKILL.mdcore14,639 bytes
Read SKILL.md
# Orchard Core AI Tool Instances
An AI tool instance is a function an administrator creates from a developer-registered **source**. The source describes a capability once (for example "call an HTTP API"); each named instance has its own description, settings, permission, and function name.
| Concept | Registered by | Cardinality |
|---|---|---|
| Tool | Developer, in code | One function per tool |
| Tool instance source | Developer, in code | Blueprint only, never callable directly |
| Tool instance | Administrator, in the admin | Many per source, one function each |
## Guidelines
- Enable `CrestApps.OrchardCore.AI.ToolInstances` (depends on `CrestApps.OrchardCore.AI`). It adds **Artificial Intelligence → Tool Instances**.
- The **Name** is unique and cannot change after creation, because it derives the function name: `tool_instance_` plus the sanitized name, with a short hash suffix when sanitizing changed the name or it is too long. The MCP allow-list accepts either the name or the function name.View the complete source on GitHuborchardcore-ai-tools
When your agent uses it
Skill for registering, authorizing and selecting AI tools (functions) in Orchard Core with CrestApps AI Services (CrestApps.OrchardCore.AI). Covers AddCoreAITool and the AIToolBuilder (WithTitle, WithDescription, WithCategory, WithPurpose, WithDependency, Selectable, Hidden), system versus hidden versus selectable tools, AIToolDefinitionOptions.GetSelectableTools, how the orchestrator assembles tools from ProfileToolRegistryProvider, SystemToolRegistryProvider, tool instances and agents, where selections are stored (FunctionInvocationMetadata, ProfileTemplateMetadata.ToolNames, ChatInteraction.ToolNames), the AccessAnyAITool and AccessAITool_{toolName} permissions with OrchardCoreAIToolAccessEvaluator, when access is checked for editors, chat interactions and AI profile sessions, and MCP exposure of selectable tools. Use this skill when requests mention Orchard Core AI tools, custom AI functions, AddCoreAITool, selectable or system tools, tool permissions, or tools missing for a role.
What it loads into context
Frontmatter
235 tokensAlways available to the agent
SKILL.md
2,198 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Register a custom tool
- How the tool set is built
- Where selections are stored
- Permissions
- Built-in tool catalogs
- Troubleshooting
Files
SKILL.mdcore10,078 bytesSKILL.mdcore10,078 bytes
Read SKILL.md
# Orchard Core AI Tools
A tool is a named `AITool` (usually an `AIFunction`) registered in code. Profiles, templates, chat interactions, and workflow tasks select tools by name; the orchestrator resolves them as keyed services for each request, after an authorization check.
## Guidelines
- Enable `CrestApps.OrchardCore.AI` for the tool pickers, permissions, and access evaluator. Install CrestApps packages in the web/startup project.
- Register a tool with `services.AddCoreAITool<TTool>(name)`; it adds the definition to `AIToolDefinitionOptions` and a keyed `AITool` singleton under the same name. Names must be unique and stable.
- **A new tool is a system tool by default.** System tools are auto-included by the orchestrator, never appear in pickers, and are never exposed by the MCP server. Call `.Selectable()` to show it in pickers, or `.Hidden()` to keep it out of pickers while letting a profile (for example a system agent) reference it by name.
- Only selectable tools can be opted in for MCP clients (`orchardcore-ai-mcp-server`).
- Descriptions are what the model reads to choose a tool. Describe side effects and required arguments precisely.
- Do not make destructive or privileged tools selectable for ordinary users.
## Register a custom toolView the complete source on GitHuborchardcore-ai-usage-analytics
When your agent uses it
Skill for the AI Usage Analytics report and AI usage metering in CrestApps.OrchardCore 3.0. Covers the Reports, Billing and Usage, AI Usage Analytics page in the CrestApps.OrchardCore.AI.Chat feature, the ViewChatAnalytics permission, the EnableAIUsageTracking setting in GeneralAISettings, the Metered usage, Completions and Voice tables and their grouping, AICompletionUsageRecord units (cached input, reasoning, audio tokens, audio minutes, characters, images), usage categories and purposes, labelling requests with UseUsageLabels on IAIClientFactory builders or with AIUsageScope.Begin, AICompletionContextKeys.UsageContextType and UsagePurpose, AIUsageCategories, AIUsagePurposes and AIUsageFeaturePurposes, IAICompletionUsageService, AI voice session summaries and IAIVoiceSessionSummaryStore, and turning usage into cost. Use this skill when requests mention AI usage analytics, AI token usage, AI billing, metered usage, usage labels, AI cost reporting, or tracking which feature spent AI tokens.
What it loads into context
Frontmatter
252 tokensAlways available to the agent
SKILL.md
2,173 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Setup
- What the page shows
- Categories and purposes
- Label your module's requests
- Read usage in code
- Voice figures
- Turning usage into cost
- Upgrading from 2.x
- Related skills
Files
SKILL.mdcore9,410 bytes
Read SKILL.md
# Orchard Core AI Usage Analytics
Every AI client the site creates through `IAIClientFactory` meters its own requests, whatever the
provider and whatever the kind (chat, embeddings, images, speech-to-text, text-to-speech, realtime). The
**AI Usage Analytics** page reports those records per model, category and purpose, plus chat completions
and automated voice calls.
## Setup
| Item | Value |
| --- | --- |
| Feature | AI Chat, `CrestApps.OrchardCore.AI.Chat` |
| Page | **Reports > Billing & Usage > AI Usage Analytics** (`/Admin/AI/UsageAnalytics/Index`) |
| Permission | `ViewChatAnalytics` (granted to Administrator by default) |View the complete source on GitHuborchardcore-ai-web-crawlers
When your agent uses it
Skill for CrestApps AI Web Crawlers in Orchard Core 4.0 (CrestApps.OrchardCore 3.0). Covers the Web AI data source, strategy-based web crawlers with the built-in Sitemap strategy, sitemap discovery from robots.txt, include and exclude URL patterns, page limits, concurrency and timeouts, incremental re-crawls with per-page crawl state, the hourly Web Crawler Re-index task and Synchronize now, citations that link back to the page, the AIWebCrawlers admin list, the ManageWebCrawlers permission, WebCrawlerOptions defaults, and custom crawl strategies. Use it for CrestApps.OrchardCore.AI.WebCrawlers, WebCrawler, SitemapWebCrawlerMetadata, IWebCrawlerStrategy, WebCrawlerStrategyOptions, IWebCrawlerReindexPlanner, IWebCrawlerReindexService, IWebCrawlerStore, IWebCrawlStateStore, WebCrawlerReferenceLinkResolver, and WebCrawlerReindexBackgroundTask.
What it loads into context
Frontmatter
232 tokensAlways available to the agent
SKILL.md
2,136 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Scrape public websites into the AI knowledge base
Files
SKILL.mdcore9,151 bytesSKILL.mdcore9,151 bytesSKILL.mdcore9,151 bytesSKILL.mdcore9,151 bytesSKILL.mdcore9,151 bytesSKILL.mdcore9,151 bytesSKILL.mdcore9,151 bytes
Read SKILL.md
# Orchard Core AI Web Crawlers
## Scrape public websites into the AI knowledge base
You are an Orchard Core expert. Generate configuration and code for CrestApps web crawlers: a **Web** AI data source is a knowledge base target, and one or more **web crawlers** point at it. Each crawler scrapes one site with a crawl **strategy**, cleans each page to text, and indexes it with its URL kept for citations.
### Guidelines
- Enable `CrestApps.OrchardCore.AI.WebCrawlers`; it depends on `CrestApps.OrchardCore.AI.DataSources`, which comes along.
- The Web data source needs a knowledge base index with an embedding deployment that declares `textEmbedding` (see `orchardcore-ai-data-sources`). It has no connection settings and no field mapping: each page is one document keyed by its URL.
- **Sitemap** is the built-in strategy. A crawler needs a base URL or an explicit sitemap URL.
- Crawl politely: keep **Max concurrent requests** low, set a meaningful **User-Agent**, and use include and exclude patterns to stay inside the content you need.
- Only crawl sites you are allowed to scrape; treat scraped text as untrusted input to the model.
- Install the package in the web/startup project.View the complete source on GitHuborchardcore-ai-workflows
When your agent uses it
Skill for using CrestApps AI Services in Orchard Core Workflows. Covers the AI Completion using Profile task (AICompletionFromProfileTask) and the AI Completion using Direct Config task (AICompletionWithConfigTask, which needs CrestApps.OrchardCore.AI.Chat.Interactions and stores an embedded ChatInteraction), the Content, Knowledge and Capabilities fields contributed by data sources, documents, prompting, personas, tool instances, MCP and A2A features, Liquid prompt rendering, chat deployment resolution through the chat slot, the Done, Drew Blank and Failed outcomes, AIResponseMessage output read with Workflow.Output, metering under the Workflow usage category, and the AIChatSessionFieldExtractedEvent, AIChatSessionAllFieldsExtractedEvent, AIChatSessionClosedEvent and AIChatSessionPostProcessedEvent events and their inputs. Use this skill when requests mention Orchard Core AI workflows, AI completion tasks, reacting to chat session events, or an AI workflow task that fails or draws blank.
What it loads into context
Frontmatter
232 tokensAlways available to the agent
SKILL.md
2,087 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Enable
- AI Completion using Profile
- AI Completion using Direct Config
- Usage metering
- Chat session events
- Upgrading from 2.x
- Troubleshooting
Files
SKILL.mdcore9,112 bytes
Read SKILL.md
# Orchard Core AI Workflows
With `OrchardCore.Workflows` enabled, CrestApps AI Services adds two completion tasks and four chat session events.
## Guidelines
- **AI Completion using Profile** needs `CrestApps.OrchardCore.AI` and `OrchardCore.Workflows`.
- **AI Completion using Direct Config** additionally needs `CrestApps.OrchardCore.AI.Chat.Interactions`, because it reuses the chat interaction configuration model and completion pipeline.
- The chat session events need an enabled chat feature (which brings `CrestApps.OrchardCore.AI.Chat.Core`) plus `OrchardCore.Workflows`. Do not enable `CrestApps.OrchardCore.AI.Chat.Core` directly; enable a public chat feature such as `CrestApps.OrchardCore.AI.Chat`.
- Both tasks render their prompt with Liquid, save a non-empty reply as an `AIResponseMessage` in `Workflow.Output[ResultPropertyName]` (default `ChatResponse`), and end on **Done**, **Drew Blank**, or **Failed**.
- Prefix result names with `AI-` to avoid collisions, and read the text with `.Content`.
- Prefer the profile task in production so deployment, instructions, and capabilities are governed in one place.
- Install CrestApps packages in the web/startup project.
View the complete source on GitHuborchardcore-bookings
When your agent uses it
Skill for the CrestApps Orchard Core Bookings commerce module. Covers the BookingPart for Departure, Nightly and TimeSlot products, capacity per date in BookingSlot records, occupancy pricing, weekend prices, deposits with the balance charged to the saved card, cancellation tiers and refunds, request-to-book quotes, Traveler details at checkout, the booking search and calendar, and the BookingDates recipe step. Use this skill when requests mention Orchard Core bookings, tours, appointments, room or rental stays, time slots, booking deposits, or booking cancellation policies. Strong matches include CrestApps.OrchardCore.Bookings, BookingPart, BookingKind, BookingSlot, BookingSchedule, BookingCapacityService, BookingService, BookingDepositService, BookingBalanceTenderProvider, BookingCartLineHandler, ManageBookings and BookingDates.
What it loads into context
Frontmatter
193 tokensAlways available to the agent
SKILL.md
2,921 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Sell Products by Date
- Booking Kinds and the Part
- Dates and Capacity
- Cart, Orders and Booking Status
- Deposits and the Balance
- Cancellation and Requests to Book
- Travelers
- Storefront and Admin
- Troubleshooting
Files
SKILL.mdcore11,778 bytes
Read SKILL.md
# Orchard Core Bookings - Prompt Templates
## Sell Products by Date
You are an Orchard Core expert. Generate accurate setup, recipes and extension guidance for the CrestApps Bookings module, which sells products by date as fixed departures, nightly stays or time slots.
### Guidelines
- Install `CrestApps.OrchardCore.Bookings` (or the `CrestApps.OrchardCore.Cms.Core.Targets` bundle) in the web/startup project.
- Enable `CrestApps.OrchardCore.Bookings`. It depends on `CrestApps.OrchardCore.Commerce`, `CrestApps.OrchardCore.Orders`, `CrestApps.OrchardCore.Customers` and `CrestApps.OrchardCore.Transactions`, and needs a sellable product (`CrestApps.OrchardCore.Products`, Carts and `CrestApps.OrchardCore.Checkout`) to be useful.
- A booking product is an ordinary product (`ProductPart`) with the attachable `BookingPart`. See `orchardcore-products` for the product itself and `orchardcore-checkout` for the checkout it is paid through.
- Store dates in the site's time zone. Slot keys are `yyyy-MM-dd`, or `yyyy-MM-ddTHH:mm` for a time slot.
- Do not decrement capacity yourself. `BookingCapacityService` holds, commits and releases dates under a distributed lock per product.
- A deposit requires a payment provider that can save a card for off-session charges (Stripe). See `orchardcore-payments`.View the complete source on GitHuborchardcore-carts
When your agent uses it
Skill for the CrestApps Orchard Core Carts module (CrestApps.OrchardCore.Carts, Carts.Wishlists, Carts.Api). Covers what a cart may hold, guest carts by the cart_owner cookie and merging on sign-in, re-pricing every line through IProductSnapshotResolver and IPriceResolver, ICartService, CartOptions (lifetimes, MaxLines, MaxQuantity, ExcludedParts, ChooseOnProductPageParts), ICartLineHandler with CartLinePrepareContext and CartLineEvaluateContext for line details, ICartActionProvider for cart page buttons, the AddToCart, Cart, CartLink and MiniCart shapes, the cart endpoints and Cart rate-limit group, stock and market behavior in the cart, wishlists, and the Cart API with the X-Cart-Token header. Use it when requests mention an Orchard Core shopping cart, add to cart, mini cart, cart line details, wishlists or a headless cart.
What it loads into context
Frontmatter
230 tokensAlways available to the agent
SKILL.md
2,238 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Where it fits in the commerce suite
- Features
- What a cart may hold
- Ownership and lifetime
- Options
- Line details with `ICartLineHandler`
- Cart page actions
- Shapes and endpoints
- Stock and markets in the cart
- Wishlists
- Cart API
- Not included
Files
SKILL.mdcore9,280 bytes
Read SKILL.md
# CrestApps Carts
Carts (new in CrestApps.OrchardCore 3.0) lets visitors put products sold online in a cart from listing cards and product pages. A cart stores what was chosen (product, price, variant, quantity, add-ons, details) and never a price from the browser; every line is priced again whenever it is shown.
## Where it fits in the commerce suite
| Module | Relationship |
| --- | --- |
| Commerce, Products (`orchardcore-commerce`, `orchardcore-products`) | Required. Products supplies prices, variants, add-ons and availability. |
| Orders (`orchardcore-orders`) | Adds **Checkout** to the cart and turns it into an order |
| Checkout (`orchardcore-checkout`) | Takes the order's payment |
| Inventory (`orchardcore-inventory`) | Caps quantities and refuses sold-out lines |
| Markets (`orchardcore-markets`) | Prices the cart in the shopper's currency and refuses restricted products |
View the complete source on GitHuborchardcore-checkout
When your agent uses it
Skill for the CrestApps Orchard Core Checkout framework (CrestApps.OrchardCore.Checkout, CrestApps.OrchardCore.Checkout.TestProvider, CrestApps.OrchardCore.Checkout.Api). Covers starting a checkout from a custom module with ICheckoutEngine and StartCheckoutRequest (ReturnUrl, ReturnText, Title, OwnerId), steps and BillingItem lines through ICheckoutHandler and CheckoutHandlerBase, completion, failure, cancel and expiry hooks, CheckoutFlowDisplayDriver, CheckoutSession and CheckoutInvoice, guest ownership, the payment ledger and compensation refunds, the Test payments provider, discounts before tax with ICheckoutDiscountProvider, the Coupon catalog and Coupons recipe step, coupons limited by CheckoutDiscountScope and on transaction payments, tenders with ICheckoutTenderProvider, payment gates and the Checkout API. Use it when requests mention Orchard Core checkout, taking a payment from a custom module, checkout steps, coupons, discount codes, test payments, or a checkout that does not complete.
What it loads into context
Frontmatter
231 tokensAlways available to the agent
SKILL.md
5,328 tokensWhen the skill is activated
Reference documents
7,092 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Features
- Guidelines
- Starting a checkout and handling the outcome
- Sessions, invoice and ledger
- Custom steps
- Public checkout
- Test payments
- Discounts and coupons
- Tenders and payment gates
- Checkout API
- Permissions
- Upgrading from 2.x
- Troubleshooting
Files
SKILL.mdcore23,183 bytesreferences/coupons-and-tenders.mddoc13,490 bytesreferences/custom-checkout-example.mddoc18,753 bytes
Read SKILL.md
# CrestApps Orchard Core Checkout
Checkout is the one path that takes money in the CrestApps commerce suite. Orders, subscriptions, transaction pay links, installment plans, bookings and the point of sale all start a checkout session through `ICheckoutEngine`; payment providers settle it; handlers decide what a completed checkout means. It is not a storefront: a consuming module contributes what is bought and reacts to the outcome.
Related skills: `orchardcore-commerce` (suite map and API conventions), `orchardcore-payments` (provider contracts, Stripe, refunds, installment plans), `orchardcore-transactions` (the ledger of money owed), `orchardcore-pay-later` (offline methods), `orchardcore-carts` and `orchardcore-orders` (the `Order` reference type), `orchardcore-taxation`, `orchardcore-shipping`, `orchardcore-customers` (Contact step, store credit, points).
## Features
| Feature ID | Name | Adds | Depends on |
| --- | --- | --- | --- |
| `CrestApps.OrchardCore.Checkout` | Checkout | Engine, public checkout pages, payment endpoints, coupons, tenders, refund and reconciliation services, **Settings > Commerce > Checkout** | `CrestApps.OrchardCore.Commerce` |
| `CrestApps.OrchardCore.Checkout.TestProvider` | Test payments | Provider key `test` that confirms every payment without moving money | Checkout |
| `CrestApps.OrchardCore.Checkout.Api` | Checkout API | Checkout endpoints in the commerce JSON API (`api/commerce/v1`) | Checkout |
View the complete source on GitHuborchardcore-classifieds
When your agent uses it
Skill for the CrestApps Orchard Core Classifieds commerce module. Covers the ClassifiedPart that makes a content type visitors post from the site, ClassifiedPartSettings TermDays and RequireApproval, moderation, terms that expire and renew, the ClassifiedUpgradePart for paid Feature and Bump upgrades bought through the cart, the owner listings page, and search by words and distance on a Leaflet map. Use this skill when requests mention Orchard Core classifieds, user-posted listings, ads, directory entries, listing moderation, featured or bumped listings, or listing search by distance. Strong matches include CrestApps.OrchardCore.Classifieds, ClassifiedPart, ClassifiedUpgradePart, ClassifiedStatus, ClassifiedService, ClassifiedIndex, ClassifiedUpgradeLineHandler, PostClassifieds and ModerateClassifieds.
What it loads into context
Frontmatter
190 tokensAlways available to the agent
SKILL.md
2,093 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Let Visitors Post Listings
- The Parts
- ClassifiedService Lifecycle
- Pages
- Troubleshooting
Files
SKILL.mdcore8,505 bytes
Read SKILL.md
# Orchard Core Classifieds - Prompt Templates
## Let Visitors Post Listings
You are an Orchard Core expert. Generate accurate setup and extension guidance for the CrestApps Classifieds module, which lets visitors post content (ads, directory entries, properties) that is moderated, runs for a term, and can be featured or bumped by a paid upgrade.
### Guidelines
- Install `CrestApps.OrchardCore.Classifieds` (or the `CrestApps.OrchardCore.Cms.Core.Targets` bundle) in the web/startup project.
- Enable `CrestApps.OrchardCore.Classifieds`. It depends on `CrestApps.OrchardCore.Commerce` and `CrestApps.OrchardCore.Orders`.
- Paid upgrades are products. Enable `CrestApps.OrchardCore.Products`, `CrestApps.OrchardCore.Carts` and `CrestApps.OrchardCore.Checkout` to sell them (see `orchardcore-products` and `orchardcore-checkout`).
- Attach `ClassifiedPart` to the content type visitors post. Attach `ClassifiedUpgradePart` to a product type.
- Owners edit their listing with the type's storefront editor, including the part's place. Only staff see the status and dates, in the admin editor (`AdminAttribute.IsApplied`).
- Orders and carts are covered by `orchardcore-orders` and `orchardcore-carts`; the shared Commerce menu and storefront account by `orchardcore-commerce`.View the complete source on GitHuborchardcore-commerce
When your agent uses it
Skill for the CrestApps Orchard Core Commerce suite hub. Covers picking the right commerce features, the dependency-only Commerce feature (CrestApps.OrchardCore.Commerce) with its shared Commerce admin menu, storefront account menu, CustomerAdminPage attribute, financial-document policy and personal data service, the store setup guide with IStoreSetupStep and staff role presets, the Online store and Commerce starter recipes, the Storefront theme, the commerce JSON API at api/commerce/v1 (bearer tokens, guest X-Cart-Token and X-Checkout-Token, Idempotency-Key, X-Market, conflict codes), outgoing Commerce Webhooks (CrestApps.OrchardCore.Commerce.Webhooks, ICommerceWebhookPublisher, AddCommerceWebhookEvent, HMAC-SHA256 signatures), background tasks, web farm hosting and the extension seam map. Use it when requests mention Orchard Core commerce, an online store, headless commerce, commerce webhooks, store setup, CommerceConstants, ICommercePersonalDataService or which commerce module to extend.
What it loads into context
Frontmatter
243 tokensAlways available to the agent
SKILL.md
4,020 tokensWhen the skill is activated
Reference documents
4,643 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- How the suite fits together
- The Commerce feature
- Store setup and staff roles
- Recipes and the Storefront theme
- The commerce JSON API
- Commerce Webhooks
- Which seam to implement
- Permissions
Files
SKILL.mdcore17,179 bytesSKILL.mdcore17,179 bytesreferences/commerce-api.mddoc8,448 bytesreferences/commerce-webhooks.mddoc5,075 bytesreferences/storefront-and-operations.mddoc4,690 bytes
Read SKILL.md
# CrestApps Commerce Suite
The CrestApps commerce modules (new in CrestApps.OrchardCore 3.0) let an Orchard Core site sell goods, downloads, plans and sites. They are separate modules with one-way dependencies, so a site enables only what it needs. This skill is the hub: it maps the suite, covers the shared **Commerce** feature, store setup, the JSON API and webhooks, and says which seam to implement.
## How the suite fits together
| Layer | Module (feature ID) | Depends on | Skill |
| --- | --- | --- | --- |
| Shell | Commerce (`CrestApps.OrchardCore.Commerce`, dependency only) | none | `orchardcore-commerce` |
| Shell | Commerce Webhooks (`CrestApps.OrchardCore.Commerce.Webhooks`) | Commerce | `orchardcore-commerce` |
| Catalog | Products (`CrestApps.OrchardCore.Products`), Product Listing and sub-features | Commerce | `orchardcore-products` |
| Catalog | Markets (`CrestApps.OrchardCore.Markets`) | Commerce, Products | `orchardcore-markets` |
| Buying | Carts (`CrestApps.OrchardCore.Carts`) | Commerce, Products | `orchardcore-carts` |
| Buying | Checkout (`CrestApps.OrchardCore.Checkout`), coupons, tenders | Commerce | `orchardcore-checkout` |View the complete source on GitHuborchardcore-companies
When your agent uses it
Skill for the CrestApps Orchard Core Companies module (CrestApps.OrchardCore.Companies), B2B selling on the CrestApps commerce suite. Covers Company with CompanyBuyer roles and order limits, CompanyLocation, CompanyTerms (NetDays, DepositPercent, CreditLimit, RequirePurchaseOrder), the company checkout step and purchase order numbers, the company-terms tender that puts the rest of an order on account as a transaction, price lists through IBuyerPriceProvider and CompanyPriceProvider, approvals and monthly budgets with CompanyApprovalService and CompanyApprovalPaymentGate, quotes, OCI punchout from a procurement system, the company API endpoints, ICompanyStore and CompanyService, and the ManageCompanies permission. Use it when requests mention business customers, B2B buyers, net terms, credit limits, purchase orders, company price lists, order approvals, budgets or punchout.
What it loads into context
Frontmatter
209 tokensAlways available to the agent
SKILL.md
2,197 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Feature
- Model
- Terms at checkout
- Price lists
- Approvals and budgets
- Punchout (OCI)
- API
- Screens and permissions
- Troubleshooting
Files
SKILL.mdcore8,963 bytes
Read SKILL.md
# CrestApps Orchard Core Companies
Companies sells to businesses. A company has buyers (some of them admins), the places it ships to, payment terms (a deposit at checkout, the rest invoiced in net days under a credit limit), a price list, order limits and a monthly budget that send orders for approval, and a punchout key for its procurement system. It is built entirely on the suite's seams: a checkout step, a tender, a payment gate, an order event handler, a buyer price provider and a cart action.
Related skills: `orchardcore-orders` (orders, quotes, `Order.Approval`, purchase order numbers), `orchardcore-checkout` (steps, tenders, gates), `orchardcore-transactions` (what the company owes), `orchardcore-products` (`IPriceResolver`), `orchardcore-customers` (business customers and tax ids), `orchardcore-addresses`.
## Feature
| Feature ID | Depends on | Seams it fills |
| --- | --- | --- |
| `CrestApps.OrchardCore.Companies` (`CompaniesConstants.Feature`) | Commerce, `CrestApps.OrchardCore.Orders`, Addresses, Transactions | `ICheckoutHandler`, `ICheckoutTenderProvider`, `ICheckoutPaymentGate`, `IOrderEventHandler`, `IBuyerPriceProvider`, `ICartActionProvider` |
Install `CrestApps.OrchardCore.Companies` in the web project. Data lives in the `Companies` YesSql collection.
View the complete source on GitHuborchardcore-contact-center
When your agent uses it
Skill for enabling, configuring, extending and operating the CrestApps Orchard Core Contact Center module that orchestrates work between the Omnichannel CRM and Telephony. Covers the CrestApps.OrchardCore.ContactCenter features (Agents, AgentEntitlements, BusinessHours, Queues, Dialer, Dialer.Paced, EntryPoints, InboundVoice, Voice, Voice.Media, Recording, SecureCapture, Supervision, RealTime), presence, queues, reservations and routing, Preview, Power, Progressive and Predictive dialing with compliance screening, entry points and IVR, voicemail, recording governance, call topology, the Agent Workspace and Live dashboard, recipe steps, configuration sections, workflows, reports, health checks and runbooks. Use it for Contact Center, call center, ACD, dialer, IVR or supervisor monitoring work. Strong matches include IContactCenterEventHandler, IActivityRoutingStrategy, IContactCenterWorkStateService, IContactCenterVoiceProvider, ISecureCaptureTokenSink, ContactCenterHub, and ContactCenterPermissions.
What it loads into context
Frontmatter
242 tokensAlways available to the agent
SKILL.md
5,719 tokensWhen the skill is activated
Reference documents
17,827 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Build a Contact Center on Orchard Core
- Feature Overview
- Enable via Recipe
- Key Concepts
- Admin Locations
- Permissions and Roles
- Key Extension Points
- Upgrading from 2.x
- Troubleshooting Pointers
- References
- Related Skills
Files
SKILL.mdcore25,471 bytesSKILL.mdcore25,471 bytesSKILL.mdcore25,471 bytesreferences/agent-desktop.mddoc8,981 bytesreferences/analytics.mddoc7,405 bytesreferences/configuration-and-recipes.mddoc14,593 bytesreferences/production-support.mddoc10,942 bytesreferences/routing-and-dialer.mddoc14,669 bytesreferences/voice-routing.mddoc14,634 bytesreferences/workflows.mddoc7,049 bytes
Read SKILL.md
# Orchard Core Contact Center - Prompt Templates
## Build a Contact Center on Orchard Core
You are an Orchard Core expert. Generate accurate feature selections, recipes, configuration, extension code, and operational guidance for the CrestApps **Contact Center** module set. It turns the Omnichannel CRM into a contact center: the CRM owns the work (contacts, activities, subjects, dispositions), Contact Center owns orchestration (queues, routing, reservations, presence, dialing, interactions, events), and Telephony owns media execution.
### Guidelines
- Install `CrestApps.OrchardCore.ContactCenter` (and the provider package, for example Telnyx or Asterisk) in the web/startup project.
- Enable the capability you need and let Orchard resolve dependencies. There is no separate administration feature; each capability ships its own screens.
- `CrestApps.OrchardCore.ContactCenter.Voice`, `.RealTime`, `.ProviderInbox`, `.Recording.Core` and `.AgentServices` are dependency-only. Never list them as the thing to enable; enable Inbound Voice, the Dialer, Recording or Supervision instead.
- The Agent Workspace, the docked agent bar, the soft-phone projection and each provider's Contact Center voice adapter are integration glue with no feature toggle. They activate when the features they compose are all enabled.
- The CRM `OmnichannelActivity` is the unit of work; an `Interaction` is the history of one attempt and never owns a disposition. Complete work through the Omnichannel `IActivityDispositionService`, never by writing activity status directly.
- Decide routing from `IContactCenterWorkStateService`, not from the activity's projected `AssignedToId` or `ReservationId` columns.View the complete source on GitHuborchardcore-content-access-control
When your agent uses it
Skill for role-based content access control in Orchard Core with the CrestApps Content Access Control module. Covers restricting who can view a content item by the roles picked on a RolePickerPart, the Restrict content setting RolePickerPartContentAccessControlSettings, how RoleBasedContentItemAuthorizationHandler evaluates ViewContent, the Administrator bypass, named attachments, migrations, recipes, and the 3.0 change that makes restrictions apply even when View content is already granted. Use this skill when requests mention Orchard Core Content Access Control, restricting content by role, role-based content viewing, members-only content items, or RolePickerPart access settings. Strong matches include CrestApps.OrchardCore.ContentAccessControl, CrestApps.OrchardCore.Roles, RoleBasedContentItemAuthorizationHandler, RolePickerPartContentAccessControlSettings, IsContentRestricted and CommonPermissions.ViewContent.
What it loads into context
Frontmatter
206 tokensAlways available to the agent
SKILL.md
1,917 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Restrict content items by role
- How authorization works
- Configure a restricted type
- Check access in custom code
- Upgrading from 2.x
- Troubleshooting
Files
SKILL.mdcore9,196 bytes
Read SKILL.md
# CrestApps Content Access Control
## Restrict content items by role
You are an Orchard Core expert. Content Access Control (`CrestApps.OrchardCore.ContentAccessControl`) restricts who may view individual content items. It adds a **Restrict content?** setting to each `RolePickerPart` attached to a content type; when it is on, the roles picked on an item decide who may view that item.
### Guidelines
- Install `CrestApps.OrchardCore.ContentAccessControl` in the web or startup project and enable the feature. It depends on `CrestApps.OrchardCore.Roles` (Enhanced Roles), which provides `RolePickerPart`; see the `orchardcore-crestapps-roles` skill.
- Attach a `RolePickerPart` to the type first; **Restrict content?** appears in that part's settings.
- Only `CommonPermissions.ViewContent` checked against a `ContentItem` resource is affected. Edit, publish and delete checks are not.
- Use `RolePickerPartSettings.ExcludedRoles` to keep roles such as `Administrator`, `Authenticated` and `Anonymous` out of the picker.
- Code that shows content without calling `IAuthorizationService.AuthorizeAsync(user, CommonPermissions.ViewContent, contentItem)` is not protected; authorize every item you render from custom queries, APIs or lists.
- Enable `CrestApps.OrchardCore.Recipes` for schema support of `RolePickerPartContentAccessControlSettings`.View the complete source on GitHuborchardcore-content-transfer
When your agent uses it
Skill for bulk content import and export in Orchard Core with CrestApps Content Transfer. Covers CSV and Excel formats, the OpenXml and Azure Blob Storage features, ContentImportOptions batching and chunked upload limits, BackgroundWork pacing, hosting limits, scale-out with Redis locks, per-type permissions, import locks and the stalled-row watchdog, queued exports, and extension points such as IContentImportHandler, StandardFieldImportHandler, IContentImportRowFilter, IContentTransferFileFormatProvider, IContentTransferFileReaderTransformer, IContentExportBatchHandler and ExportRequest options. Use this skill when requests mention Orchard Core bulk import, bulk export, CSV or Excel content transfer, spreadsheet mappings, an import stuck in Processing, or large file uploads. Strong matches include CrestApps.OrchardCore.ContentTransfer, CrestApps.OrchardCore.ContentTransfer.OpenXml, CrestApps.OrchardCore.ContentTransfer.Azure, ContentTransferPermissions and ContentImportOptions.
What it loads into context
Frontmatter
223 tokensAlways available to the agent
SKILL.md
3,146 tokensWhen the skill is activated
Reference documents
2,611 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure bulk import and export
- Import processing
- Configuration
- Extend the pipeline
- Upgrading from 2.x
- Troubleshooting
Files
SKILL.mdcore13,717 bytesreferences/extensibility.mddoc12,518 bytes
Read SKILL.md
# CrestApps Content Transfer
## Configure bulk import and export
You are an Orchard Core expert. CrestApps Content Transfer bulk imports and exports content items through pluggable file formats. The base feature supports CSV; OpenXml adds `.xlsx`; Azure Blob Storage keeps the transfer files in a shared container for scaled-out sites.
### Guidelines
- Install `CrestApps.OrchardCore.ContentTransfer` (and optionally `.OpenXml`, `.Azure`) in the web or startup project.
- The base feature depends on Orchard Core `OrchardCore.Resources` (for `bootstrap-select`) and `CrestApps.OrchardCore.Resources`.
- Legacy `.xls` is not supported; OpenXml handles `.xlsx`.
- Every content type takes part by default. `ContentTypeTransferSettings.AllowBulkImport` and `AllowBulkExport` (**Allow bulk import** / **Allow bulk export** on the type) default to `true`.
- Download the template for a type rather than hand-authoring columns; it reflects the registered handlers.
- Imports save drafts unless **Publish imported content** is checked. A row with an existing `ContentItemId` updates a new latest version; `ContentItemVersionId` is exported for reference and ignored on import.View the complete source on GitHuborchardcore-crestapps-content-fields
When your agent uses it
Skill for the CrestApps Content Fields module in Orchard Core, which adds PhoneField and AddressField. Covers PhoneField storage with E.164 validation, country selection and PhoneFieldSettings, the Address Field feature with country-aware editing through the Addresses module, AddressFieldSettings, the AddressFieldIndex for querying by place, recipe schema support, display drivers and content-definition migrations. Use this skill when requests mention CrestApps PhoneField, AddressField, international telephone fields, country-aware phone input, E.164 phone storage, postal address fields, or querying content by country or region. Strong matches include CrestApps.OrchardCore.ContentFields, CrestApps.OrchardCore.ContentFields.Address, PhoneField, PhoneFieldSettings, InitialCountryMode, AddressField, AddressFieldSettings, AddressFieldIndex, PhoneFieldDisplayDriver, AddressFieldDisplayDriver and IPhoneNumberService.
What it loads into context
Frontmatter
211 tokensAlways available to the agent
SKILL.md
2,692 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Add CrestApps content fields
- PhoneField
- AddressField
- Recipes
- Troubleshooting
Files
SKILL.mdcore12,256 bytes
Read SKILL.md
# CrestApps Content Fields
## Add CrestApps content fields
You are an Orchard Core expert. Generate focused code, migrations and recipes for the CrestApps content fields: `PhoneField` (international phone numbers stored in E.164 with their country) and `AddressField` (a postal address laid out and validated for its country).
### Guidelines
- Install `CrestApps.OrchardCore.ContentFields` in the web or startup project, never only in a class library.
- Enable `CrestApps.OrchardCore.ContentFields` for `PhoneField`. It depends on `CrestApps.OrchardCore.Resources`, `CrestApps.OrchardCore.PhoneNumbers`, `OrchardCore.ContentFields` and `OrchardCore.ContentTypes`.
- Enable `CrestApps.OrchardCore.ContentFields.Address` for `AddressField`. It depends on `CrestApps.OrchardCore.Addresses`, `OrchardCore.ContentFields` and `OrchardCore.ContentTypes`, and is separate so the phone field does not pull in Addresses.
- Field type names are exactly `PhoneField` and `AddressField`. Fields live in `CrestApps.OrchardCore.ContentFields.Fields`; settings and `InitialCountryMode` in `CrestApps.OrchardCore.ContentFields.Settings`.
- Store `PhoneNumber` in E.164 form (for example `+14155552671`) and `CountryCode` as ISO 3166-1 alpha-2, because countries can share a calling code.
- The phone editor validates with `IPhoneNumberService.IsValidNumber()` and normalizes with `TryFormatToE164()`; see the `orchardcore-phone-numbers` skill.View the complete source on GitHuborchardcore-crestapps-recipes
When your agent uses it
Skill for the CrestApps Recipes module in Orchard Core, which publishes JSON Schema for recipe steps. Covers RecipeSchemaService, RecipeExecutionService, the schema-aware JSON Import editor, custom IRecipeStep providers, Settings step contributions, content definition and content item schemas, the composed Layers, Sitemaps, deployment, AdminMenu, Queries, UrlRewriting, Placements and WorkflowType step schemas, live tenant examples, and the AI and Contact Center step schemas. Use this skill when requests mention CrestApps recipe schemas, validating generated recipes, or describing a custom rule condition, sitemap source, deployment step, admin menu node, query source, rewrite rule, placement filter or workflow activity. Strong matches include CrestApps.OrchardCore.Recipes, IRecipeStep, ISiteSettingsSchemaDefinition, IContentSchemaDefinition, PartSchemaDefinitionBase, FieldSchemaDefinitionBase, IDeploymentStepSchemaDefinition, IWorkflowActivitySchemaDefinition and IRecipeSchemaExampleService.
What it loads into context
Frontmatter
228 tokensAlways available to the agent
SKILL.md
4,103 tokensWhen the skill is activated
Reference documents
8,713 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Generate accurate Orchard Core recipe schemas
- What the module provides
- Retrieve schemas in application code
- Define a custom recipe step schema
- Describe a site settings section for the Settings step
- Extend content definition and content item schemas
- Extend composed recipe step schemas
- Surface live tenant example values
- Execute a generated recipe
- Upgrading from 2.x
- Troubleshooting
Files
SKILL.mdcore19,046 bytesSKILL.mdcore19,046 bytesSKILL.mdcore19,046 bytesreferences/composed-step-schemas.mddoc15,747 bytesreferences/content-schemas.mddoc7,840 bytesreferences/crestapps-step-schemas.mddoc7,257 bytesreferences/workflow-activity-schemas.mddoc8,906 bytes
Read SKILL.md
# CrestApps Recipes
## Generate accurate Orchard Core recipe schemas
You are an Orchard Core expert. The CrestApps Recipes module publishes JSON Schema for Orchard Core and CrestApps recipe steps, one schema per step, composed into a single recipe schema with a `steps` array. It does not replace Orchard Core's recipe handlers; it describes the payloads they accept so that recipes generated by people or AI agents can be validated before they run.
### Guidelines
- Install `CrestApps.OrchardCore.Recipes` in the web or startup project and enable the `CrestApps.OrchardCore.Recipes` feature. It depends on `OrchardCore.Recipes.Core`.
- Wrap every recipe JSON example in the root `{ "steps": [ ... ] }` format.
- A schema is not a handler. A step still executes only when its owning feature registers the Orchard Core recipe handler.
- Schemas are feature gated. Each step, part, field or contribution is registered from a `[RequireFeatures(...)]` startup, so the composed schema lists only what the tenant can import.
- Register a custom `IRecipeStep` as a scoped service. A step schema must declare a `name` property with a `const` value; that const keys the step's branch in the composed schema.
- Extend a composed step (`Layers`, `Sitemaps`, `deployment`, `AdminMenu`, `Queries`, `UrlRewriting`, `Placements`, `WorkflowType`) with a per-type contribution and its `Add...Schema<T>()` extension. Do not replace the step.View the complete source on GitHuborchardcore-crestapps-resources
When your agent uses it
Skill for the CrestApps Resources module in Orchard Core. Covers the shared script and stylesheet manifest with local assets and CDN fallbacks, the AI chat UI resources such as chat-markers, chat-image-carousel and realtime-audio, the DateRangePicker and ItemSelector view components, the date-range-picker markup contract and presets, the Vite front-end asset build with Assets.json groups and npm workspace commands, and the 3.0 removal of crestapps-bootstrap-select. Use this skill when requests mention CrestApps shared resources, a date range picker, an item selector, building CrestApps front-end assets, Assets.json, npm run build, CDN fallbacks, intl-tel-input, chart.js, flatpickr or DOMPurify. Strong matches include CrestApps.OrchardCore.Resources, ResourceManagementOptionsConfiguration, DateRangePickerViewComponent, ItemSelectorViewComponent, flatpickr-culture, date-range-picker, item-selector, chat-image-carousel and bootstrap-select.
What it loads into context
Frontmatter
231 tokensAlways available to the agent
SKILL.md
3,593 tokensWhen the skill is activated
Reference documents
1,658 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Consume CrestApps shared frontend resources
- Registered resource names
- Register resources in Razor
- Date range picker
- Item selector
- Building the module's front-end assets
- Add a shared resource to CrestApps Resources
- Upgrading from 2.x
- Troubleshooting
Files
SKILL.mdcore14,466 bytesSKILL.mdcore14,466 bytesSKILL.mdcore14,466 bytesSKILL.mdcore14,466 bytesreferences/building-assets.mddoc6,383 bytes
Read SKILL.md
# CrestApps Resources
## Consume CrestApps shared frontend resources
You are an Orchard Core expert. `CrestApps.OrchardCore.Resources` is the shared resource manifest for CrestApps modules. It registers named scripts and stylesheets with Orchard Core Resource Management, and ships two view components (`DateRangePicker` and `ItemSelector`). Consumers request a resource by name and let Orchard Core choose the local or CDN URL.
### Guidelines
- Install `CrestApps.OrchardCore.Resources` in the web or startup project when an application directly depends on its assets.
- Enable the `CrestApps.OrchardCore.Resources` feature. Other CrestApps features usually bring it in through their manifest dependencies.
- Request resources by their registered names with `<script asp-name>` / `<style asp-name>` (or the Liquid `{% script %}` / `{% style %}` tags). Do not hardcode the module's virtual asset paths.
- Scripts and styles are separate registrations. Request both when a name has both (`flatpickr`, `item-selector`, `intl-tel-input`, `chat-image-carousel`).
- CDN-capable resources declare local URLs, CDN URLs, a version, and integrity hashes. Keep CSP and SRI policies compatible with them.
- `bootstrap-select` is registered by Orchard Core's `OrchardCore.Resources` feature, not by this module. The old `crestapps-bootstrap-select` names were removed in 3.0.View the complete source on GitHuborchardcore-crestapps-roles
When your agent uses it
Skill for the CrestApps Enhanced Roles module in Orchard Core and its RolePickerPart. Covers role selection on content types with the bootstrap-select editor, RolePickerPartSettings for required, single or multiple and excluded roles, migrations, recipe schema support, content item payloads, and the 3.0 dependency on OrchardCore.Resources. Use this skill when requests mention CrestApps RolePickerPart, Enhanced Roles, a content role picker, role selection content part, role-based content metadata, RolePickerPartSettings, or closely related Orchard Core implementation, setup, upgrade or troubleshooting work. Strong matches include CrestApps.OrchardCore.Roles, RolePickerPart, RolePickerPartDisplayDriver, RolePickerPartSettingsDisplayDriver, RolePickerPartSchemaDefinition, RoleManager<IRole>, OrchardCore.Roles and OrchardCore.Resources.
What it loads into context
Frontmatter
202 tokensAlways available to the agent
SKILL.md
2,056 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Add roles to content with RolePickerPart
- Configure the part
- Configure it through the admin UI
- Define the part in a recipe
- Read the selected role names
- Upgrading from 2.x
- Troubleshooting
Files
SKILL.mdcore9,638 bytes
Read SKILL.md
# CrestApps Roles
## Add roles to content with RolePickerPart
You are an Orchard Core expert. Use the CrestApps Roles module when a content item must persist selected Orchard Core role names. `RolePickerPart` is a reusable content part with settings that control requiredness, selection cardinality, and which roles editors cannot select.
### Guidelines
- Install `CrestApps.OrchardCore.Roles` in the web or startup project.
- Enable the exact `CrestApps.OrchardCore.Roles` feature (**Enhanced Roles**). Its manifest depends on `OrchardCore.Roles` and `OrchardCore.Resources`.
- The reusable part name is `RolePickerPart`; its stored value property is `RoleNames`.
- The module's migration defines `RolePickerPart` as attachable and reusable (display name **Role Picker**, default position `999`), so a type can attach it more than once under different names.
- `RolePickerPart`, `RolePickerPartSettings` and `RolePickerPartContentAccessControlSettings` live in `CrestApps.OrchardCore.Roles.Core.Models`.
- The editor is Orchard Core's `bootstrap-select` dropdown with live search, plus select-all and deselect-all when multiple selection is allowed.View the complete source on GitHuborchardcore-crestapps-users
When your agent uses it
Skill for the CrestApps Users module in Orchard Core. Covers the dependency-only core feature with user caching and the UserPicker view component, User Display Name with UserFullNamePart, DisplayNameSettings formats, IDisplayNameProvider and the display_name Liquid filter, display-name search and picker labels, User Avatar with UserAvatarOptions read through IOptionsMonitor, Sign in with an email code, the ManageDisplaySettings and ManageAvatarSettings permissions, and the IndexUsers recipe step. Use this skill when requests mention CrestApps user display names, a user picker in an admin screen, user avatars, passwordless email code sign-in, or re-indexing users. Strong matches include CrestApps.OrchardCore.Users, CrestApps.OrchardCore.Users.DisplayName, CrestApps.OrchardCore.Users.Avatars, CrestApps.OrchardCore.Users.EmailCodeSignIn, IDisplayNameProvider, UserFullNamePart, UserAvatarPart, UserAvatarOptions, UserPickerViewComponent and UpdateUserRecipeStepHandler.
What it loads into context
Frontmatter
240 tokensAlways available to the agent
SKILL.md
2,798 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure enhanced user experiences
- Reusable user picker
- User display names
- User avatars
- Sign in with an email code
- Re-index users with a recipe
- Upgrading from 2.x
- Troubleshooting
Files
SKILL.mdcore11,738 bytes
Read SKILL.md
# CrestApps Users
## Configure enhanced user experiences
You are an Orchard Core expert. CrestApps Users extends Orchard Core Users with cached user lookups, a reusable user picker, configurable display names, media-backed avatars and passwordless sign-in with an emailed code. The core feature is enabled by dependency only; enable the specific capability you need.
### Guidelines
- Install `CrestApps.OrchardCore.Users` in the web or startup project.
- Enable `CrestApps.OrchardCore.Users.DisplayName`, `CrestApps.OrchardCore.Users.Avatars` and or `CrestApps.OrchardCore.Users.EmailCodeSignIn`. Each brings in the dependency-only `CrestApps.OrchardCore.Users`.
- Resolve user labels through `IDisplayNameProvider.GetAsync(user, cancellationToken)` (namespace `CrestApps.OrchardCore.Users`); never rebuild name formats in views.
- Use the `UserPicker` view component instead of a free-text user id box in admin screens. It needs the `CrestApps.OrchardCore.Resources` feature.
- Read `UserAvatarOptions` through `IOptionsMonitor<UserAvatarOptions>.CurrentValue`. Saving the avatar settings refreshes the options without a tenant reload.
- Avatar editing requires Orchard Core `ManageMedia`, not only permission to edit the user.View the complete source on GitHuborchardcore-custom-indexing-azureai
When your agent uses it
Skill for building a custom Azure AI Search index for arbitrary records in Orchard Core 4.0, following the CrestApps AI Memory pattern of CrestApps.OrchardCore 3.0. Covers a custom index profile type with AddAzureAISearchIndexingSource, IndexProfileHandlerBase mappings with AzureAISearchIndexMetadata, AzureAISearchIndexMap with IndexingKey and AzureFieldKey, vector fields with AzureAISearchIndexMapVectorInfo and VectorSearchMappings, normalizing managed mappings in LoadedAsync, an embedding deployment from the embedding slot stored in DataSourceIndexProfileMetadata, IDocumentIndexHandler mapping, a custom indexing service with the keyed IDocumentIndexManager, deferred lifecycle indexing, and re-sync through SynchronizedAsync. Use it for custom Azure AI Search indexing of non-content data, vector search over custom records, or questions about CrestApps.OrchardCore.AI.Memory.AzureAI, OrchardCore.Indexing, OrchardCore.AzureAI, IIndexProfileStore, IndexProfileEmbeddingMetadataAccessor, and VectorizedQuery.
What it loads into context
Frontmatter
246 tokensAlways available to the agent
SKILL.md
3,005 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Index arbitrary records into Azure AI Search
Files
SKILL.mdcore14,749 bytesSKILL.mdcore14,749 bytesSKILL.mdcore14,749 bytes
Read SKILL.md
# Orchard Core Custom Indexing for Azure AI Search
## Index arbitrary records into Azure AI Search
You are an Orchard Core expert. Generate code that indexes custom records (not content items) into an Azure AI Search index profile, optionally with vectors. Model it on `CrestApps.OrchardCore.AI.Memory` (records, settings, indexing service) and `CrestApps.OrchardCore.AI.Memory.AzureAI` (provider registration and mappings).
### When to use it
- Records you store yourself (CRM rows, generated summaries, user-scoped facts, imported data) that need full-text, filtered, or vector search.
- For Orchard content items use the built-in content index (see `orchardcore-azure-ai-search`). For RAG over an index you already have, an AI data source is usually enough (see `orchardcore-ai-data-sources`).
### Architecture
The shared module (records, neutral document, master-index setting, indexing service, lifecycle handler, re-sync handler) is identical to the Elasticsearch variant; build it as shown in `orchardcore-custom-indexing-elasticsearch`. This skill covers the Azure AI Search provider module and what differs.View the complete source on GitHuborchardcore-custom-indexing-elasticsearch
When your agent uses it
Skill for building a custom Elasticsearch index for arbitrary records in Orchard Core 4.0, following the CrestApps AI Memory pattern of CrestApps.OrchardCore 3.0. Covers a custom index profile type with AddElasticsearchIndexingSource, IndexProfileHandlerBase mappings with ElasticsearchIndexMetadata and dense vectors, an embedding deployment chosen from the embedding slot and stored in DataSourceIndexProfileMetadata, IDocumentIndexHandler mapping, a custom indexing service with the keyed IDocumentIndexManager and BuildDocumentIndexContext, deferred lifecycle indexing with ShellScope, re-sync through SynchronizedAsync, and a master index site setting read through IOptionsMonitor. Use it for custom Elasticsearch indexing of non-content data, vector search over custom records, or questions about CrestApps.OrchardCore.AI.Memory.Elasticsearch, OrchardCore.Indexing, OrchardCore.Elasticsearch, IIndexProfileStore, IndexProfileEmbeddingMetadataAccessor, and IAIClientFactory.CreateEmbeddingGeneratorAsync.
What it loads into context
Frontmatter
230 tokensAlways available to the agent
SKILL.md
4,327 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Index arbitrary records into Elasticsearch
Files
SKILL.mdcore21,573 bytesSKILL.mdcore21,573 bytesSKILL.mdcore21,573 bytes
Read SKILL.md
# Orchard Core Custom Indexing for Elasticsearch
## Index arbitrary records into Elasticsearch
You are an Orchard Core expert. Generate code that indexes custom records (not content items) into an Elasticsearch index profile, optionally with embeddings for vector search. Model it on `CrestApps.OrchardCore.AI.Memory` (records, settings, indexing service) and `CrestApps.OrchardCore.AI.Memory.Elasticsearch` (provider registration and mappings).
### When to use it
- Records you store yourself: CRM or ERP rows, generated summaries, user-scoped facts, imported business data.
- Full-text, filtered, or vector search over them through Orchard Core's index profiles.
- For Orchard content items use the built-in content index instead (see `orchardcore-elasticsearch`). For retrieval-augmented chat over an index you already have, an AI data source is usually enough (see `orchardcore-ai-data-sources`).
### Architecture
View the complete source on GitHuborchardcore-customers
When your agent uses it
Skill for the CrestApps Orchard Core Customers module (CrestApps.OrchardCore.Customers, CrestApps.OrchardCore.Customers.CheckoutDetails, CrestApps.OrchardCore.Customers.StoreCredit, CrestApps.OrchardCore.Customers.Loyalty, CrestApps.OrchardCore.Customers.Referrals, CrestApps.OrchardCore.Customers.Api) and the buyer identity foundation in CrestApps.OrchardCore.Customers.Abstractions. Covers the Customer record linked to a user or a guest, CustomerOwner and CustomerOwnerKind, ICustomerContactResolver and ICustomerOwnerNotifier, ICustomerService, the address book, the checkout Contact step, Checkout details fields, store credit, loyalty points and referrals as tenders, merging verified guests, privacy erase and export with ICustomerPrivacyHandler and ICommercePersonalDataService, the Customers recipe step and the Customers API. Use it when requests mention commerce customers, guest buyers, address books, store credit, rewards points, referral links, personal data requests, or the checkout contact step.
What it loads into context
Frontmatter
247 tokensAlways available to the agent
SKILL.md
2,817 tokensWhen the skill is activated
Reference documents
1,240 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Features
- The buyer identity foundation
- The customer record
- Checkout Contact step
- Store credit, loyalty points and referrals
- Merging guests, privacy and retention
- Recipes
- API
- Screens and permissions
- Upgrading from 2.x
Files
SKILL.mdcore11,886 bytesreferences/store-credit-loyalty-referrals.mddoc4,921 bytes
Read SKILL.md
# CrestApps Orchard Core Customers
A customer is everyone who buys: a person or a business, with an account or as a guest. A customer is not a user; sign-in, registration and passwords stay with Orchard Core Users, and `Customer.UserId` links the two. Orders, transactions and subscriptions point at one customer whatever later happens to the account.
Related skills: `orchardcore-checkout` (steps, tenders), `orchardcore-orders` (orders, gift cards), `orchardcore-addresses` (the `Address` value and editor), `orchardcore-transactions` (guest transactions, reminders), `orchardcore-companies` (business buyers), `orchardcore-commerce` (personal data requests, API conventions, webhooks), `orchardcore-taxation` (tax-exempt customers).
## Features
| Feature ID | Name | Depends on |
| --- | --- | --- |
| `CrestApps.OrchardCore.Customers` | Customers | Commerce, `OrchardCore.Users`, Addresses |
| `CrestApps.OrchardCore.Customers.CheckoutDetails` | Checkout details | Customers, Orders, Contents, Content Types |
| `CrestApps.OrchardCore.Customers.StoreCredit` | Store Credit | Customers, Orders |
| `CrestApps.OrchardCore.Customers.Loyalty` | Loyalty Points | Customers, Orders |View the complete source on GitHuborchardcore-dnc-registry
When your agent uses it
Skill for configuring national and local do-not-call registry checks in CrestApps Orchard Core, including Azure Blob Storage for uploaded local lists. Covers the DncRegistry, UsaFtc, CanadaDncl and Local features and the DncRegistry.Azure module, global import enforcement, dialer screening that fails closed with DoNotCallScreeningException, canonical PhoneNumber input, background-imported local CSV lists, tenant-aware Azure containers, and custom INationalDoNotCallRegistry providers. Use this skill when requests mention Orchard Core do-not-call, DNC, telemarketing compliance, FTC or LNNTE-DNCL registries, local DNC CSV files, DNC screening failures, or DNC Azure Blob Storage. Strong matches include CrestApps.OrchardCore.DncRegistry, INationalDoNotCallRegistry, DoNotCallScreeningException, NumberSearchContext, LocalDncRegistry, ILocalDncListManager, DncRegistrySettings, UsaFtcDncRegistrySettings, CanadaDnclRegistrySettings, and DncRegistryBlobStorageOptions.
What it loads into context
Frontmatter
249 tokensAlways available to the agent
SKILL.md
3,055 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Do-Not-Call Suppression
- Registry Keys and Settings
- Where Screening Happens
- Local Do Not Call Registry
- Azure Blob Storage Backend
- Add a Registry Provider
- Upgrading from 2.x
- Troubleshooting
Files
SKILL.mdcore13,134 bytesSKILL.mdcore13,134 bytes
Read SKILL.md
# Orchard Core DNC Registry - Prompt Templates
## Configure Do-Not-Call Suppression
You are an Orchard Core expert. Generate accurate compliance-focused configuration and code for the CrestApps DNC Registry modules. The module screens canonical phone numbers against national registries and locally uploaded lists. The same registries screen Omnichannel contact imports and Contact Center outbound dialing. The optional Azure module moves uploaded local-list files to Azure Blob Storage.
### Guidelines
- Install `CrestApps.OrchardCore.DncRegistry` (and `CrestApps.OrchardCore.DncRegistry.Azure` when needed) in the web/startup project.
- Enable `CrestApps.OrchardCore.DncRegistry` first; it depends on `CrestApps.OrchardCore.PhoneNumbers` (see `orchardcore-phone-numbers`).
- Pass canonical `PhoneNumber` values (from `IPhoneNumberService.TryParse`) to registries. Never hand a registry a raw string.
- A registry that cannot complete a lookup throws `DoNotCallScreeningException`; never return an empty set on failure. An empty set means "screened and not listed".
- A registry with no credentials does not take part in screening and returns an empty set without throwing. Configure only registries whose answers you rely on.
- Keep `ProtectedApiKey` values and Azure connection strings out of source-controlled recipes and settings files.View the complete source on GitHuborchardcore-downloads
When your agent uses it
Skill for the CrestApps Orchard Core Digital Downloads commerce module. Covers the DigitalFilesPart, the private IDigitalFileStore under the tenant App_Data scanned through the Orchard Core file creation pipeline, DownloadEntitlement records granted when an order is paid and revoked on cancel or full refund, signed expiring download links with a download limit, DownloadSettings, order page and confirmation email sections, and the DigitalFiles recipe step. Use this skill when requests mention Orchard Core digital downloads, selling ebooks or files, download links, download limits, or digital product delivery. Strong matches include CrestApps.OrchardCore.Downloads, DigitalFilesPart, IDigitalFileStore, DownloadEntitlement, DownloadService, DownloadSettings, DownloadOrderEventHandler, DownloadEmailSectionProvider, ManageDigitalDownloads and DigitalFiles.
What it loads into context
Frontmatter
192 tokensAlways available to the agent
SKILL.md
1,903 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Deliver Digital Products
- The Part and Settings
- Granting and Revoking
- Links
- Ship Files with a Recipe
- Extending
- Troubleshooting
Files
SKILL.mdcore8,043 bytes
Read SKILL.md
# Orchard Core Digital Downloads - Prompt Templates
## Deliver Digital Products
You are an Orchard Core expert. Generate accurate setup, recipes and extension guidance for the CrestApps Digital Downloads module, which keeps a product's files privately, grants them to buyers when an order is paid, and serves them through signed, expiring links.
### Guidelines
- Install `CrestApps.OrchardCore.Downloads` (or the `CrestApps.OrchardCore.Cms.Core.Targets` bundle) in the web/startup project.
- Enable `CrestApps.OrchardCore.Downloads`. It depends on `CrestApps.OrchardCore.Commerce`, `CrestApps.OrchardCore.Products`, `CrestApps.OrchardCore.Orders` and `OrchardCore.Contents`. Selling also needs Carts and `CrestApps.OrchardCore.Checkout` with a payment provider (see `orchardcore-products`, `orchardcore-checkout` and `orchardcore-payments`).
- Enable `CrestApps.OrchardCore.Customers` so a guest's Contact step asks for the email the links go to (see `orchardcore-customers`).
- Never put sellable files in the media library. Files go to `IDigitalFileStore`, which no URL serves.
- Enable an antivirus feature such as `OrchardCore.Antivirus.ClamAV` to scan uploads. Uploads run through Orchard Core's `FileCreationService` and every `IFileEventHandler` (see `orchardcore-file-upload-security` and `orchardcore-antivirus`).
- Set the site's **Base URL** so links in emails work outside a request.View the complete source on GitHuborchardcore-fundraising
When your agent uses it
Skill for the CrestApps Orchard Core Fundraising commerce module. Covers the FundraisingCampaignPart that turns a product into a donation campaign with a goal, an end date, suggested amounts and a minimum, the CampaignProgress and DonateForm shapes, donor-chosen amounts and tributes on the cart line excluded from discounts, Donation records, tax receipts emailed and kept in the donor account, refunds, and FundraisingSettings. Use this skill when requests mention Orchard Core fundraising, donations, charity campaigns, donate buttons, donation goals, or tax-deductible receipts. Strong matches include CrestApps.OrchardCore.Fundraising, FundraisingCampaignPart, DonationLineHandler, Donation, IDonationStore, DonationService, FundraisingSettings and ManageFundraising.
What it loads into context
Frontmatter
185 tokensAlways available to the agent
SKILL.md
1,850 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Raise Money with Campaigns
- The Campaign Part
- The Cart Line
- Donations, Receipts and Refunds
- Troubleshooting
Files
SKILL.mdcore7,600 bytes
Read SKILL.md
# Orchard Core Fundraising - Prompt Templates
## Raise Money with Campaigns
You are an Orchard Core expert. Generate accurate setup and extension guidance for the CrestApps Fundraising module, which turns a product into a campaign that donors give their own amount to.
### Guidelines
- Install `CrestApps.OrchardCore.Fundraising` (or the `CrestApps.OrchardCore.Cms.Core.Targets` bundle) in the web/startup project.
- Enable `CrestApps.OrchardCore.Fundraising`. It depends on `CrestApps.OrchardCore.Commerce` and `CrestApps.OrchardCore.Orders`. Taking donations also needs `CrestApps.OrchardCore.Products`, Carts and `CrestApps.OrchardCore.Checkout` with a payment provider (see `orchardcore-products`, `orchardcore-checkout` and `orchardcore-payments`).
- A campaign is a product (`ProductPart`, typically product type `Service` with the price hidden) plus `FundraisingCampaignPart`. The donor's amount replaces the product price on the cart line.
- Amounts are in the product's currency. Donors see suggested amounts converted to their shopper currency.
- Donations are never discounted. The line sets `ExcludeFromDiscounts`, so coupons, company prices and role discounts skip it.
- Orders and carts are covered by `orchardcore-orders` and `orchardcore-carts`; the shared Commerce menu and storefront account by `orchardcore-commerce`.View the complete source on GitHuborchardcore-inventory
When your agent uses it
Skill for the CrestApps Orchard Core Inventory module (CrestApps.OrchardCore.Inventory, Inventory.StockAlerts, Inventory.PurchaseOrders, Inventory.Api). Covers InventoryPart, stock items per product, variant and location, the append-only StockMovement ledger, IInventoryService (adjust, count, transfer, receive, reserve, commit, release, restock), StockChangeResult errors, stock locations and IFulfillmentLocationProvider, stock holds for orders through InventoryOrderEventHandler, IProductAvailabilityProvider and pre-orders, IStockLevelHandler and IStockLevelObserver, low-stock notifications and the Low Stock workflow event, the In stock listing filter, StockCsv import and export, the Stock recipe and deployment step, InventorySettings, back-in-stock alerts, purchase orders, stock reports, and the Inventory API. Use it when requests mention Orchard Core inventory, stock levels, stock holds, backorders, pre-orders, warehouses or locations, low stock alerts or purchase orders.
What it loads into context
Frontmatter
228 tokensAlways available to the agent
SKILL.md
2,556 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Where it fits in the commerce suite
- Features
- Model
- `IInventoryService`
- Orders and availability
- Reacting to stock levels
- Recipes, deployment and CSV
- Back-in-stock alerts and purchase orders
- Inventory API
- Admin, reports and permissions
Files
SKILL.mdcore10,645 bytes
Read SKILL.md
# CrestApps Inventory
Inventory (new in CrestApps.OrchardCore 3.0) counts the units of each product and variant on hand. Counts live outside the content item as stock items, and every change is a movement in an append-only ledger from which the count can be rebuilt.
## Where it fits in the commerce suite
| Module | Relationship |
| --- | --- |
| Commerce, Products (`orchardcore-commerce`, `orchardcore-products`) | Required. Inventory implements Products' `IProductAvailabilityProvider` and adds the In stock filter. |
| Orders (`orchardcore-orders`) | Optional. Order events hold, sell, release and restock stock. |
| Carts (`orchardcore-carts`) | Caps quantities and refuses sold-out lines through availability |
| Shipping (`orchardcore-shipping`) | Pickup locations take units from an inventory location |
| Commerce Webhooks (`orchardcore-commerce`) | `stock.changed`, `stock.low`, `stock.sold-out` events |
View the complete source on GitHuborchardcore-marketing
When your agent uses it
Skill for the CrestApps Orchard Core Marketing commerce module and how it works with checkout coupons and discounts. Covers CustomerPurchases kept per customer from paid and refunded orders, the purchases backfill, Segment rules by orders, spend, recency and country, Liquid email Campaigns sent in batches to customers who accept marketing, scheduled sending, test sends, the protected one-click unsubscribe link, and pairing campaigns with Checkout coupons limited per customer or generated codes. Use this skill when requests mention Orchard Core email marketing, customer segments, lapsed buyers, marketing campaigns, unsubscribe links, AcceptsMarketing, or promotion codes sent to customers. Strong matches include CrestApps.OrchardCore.Marketing, CustomerPurchases, CustomerPurchasesService, ICustomerPurchasesStore, Segment, SegmentRules, Campaign, CampaignService, CampaignCustomer, UnsubscribeController, MarketingBackgroundTask and ManageMarketing.
What it loads into context
Frontmatter
209 tokensAlways available to the agent
SKILL.md
2,013 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Email the Store's Customers
- Customers' Purchases
- Segments
- Campaigns
- Unsubscribing
- Coupons and Discounts for Campaigns
- Related Modules
- Troubleshooting
Files
SKILL.mdcore8,324 bytes
Read SKILL.md
# Orchard Core Marketing - Prompt Templates
## Email the Store's Customers
You are an Orchard Core expert. Generate accurate setup and extension guidance for the CrestApps Marketing module, which keeps what each customer has bought, groups customers into segments, and sends Liquid email campaigns to a segment's customers who accept marketing.
### Guidelines
- Install `CrestApps.OrchardCore.Marketing` (or the `CrestApps.OrchardCore.Cms.Core.Targets` bundle) in the web/startup project.
- Enable `CrestApps.OrchardCore.Marketing`. It depends on `CrestApps.OrchardCore.Commerce`, `CrestApps.OrchardCore.Customers` and `CrestApps.OrchardCore.Orders` (see `orchardcore-customers` for `Customer.AcceptsMarketing`).
- Configure an email provider (`OrchardCore.Email` with SMTP or Azure) and set the site's **Base URL**. Sending needs both.
- Only customers who are `Active`, accept marketing and have an email are sent to. Do not bypass this in custom code.
- Coupons and discounts are not part of this module. They are the Checkout coupon catalog (**Commerce > Coupons**, feature `CrestApps.OrchardCore.Checkout`); see `orchardcore-checkout`. Campaigns carry their codes.
- Orders and carts are covered by `orchardcore-orders` and `orchardcore-carts`; the shared Commerce menu and storefront account by `orchardcore-commerce`.View the complete source on GitHuborchardcore-marketplace
When your agent uses it
Skill for the CrestApps Orchard Core Marketplace commerce module and its Stripe Connect payouts feature. Covers vendors and the users who run them, the VendorPart on products, commission per store or per vendor, VendorEarning records held in escrow until a hold ends and the order is fulfilled, refunds taken back, early release, VendorPayout records, the IVendorPayoutProvider seam, Stripe Connect Express onboarding and transfers, MarketplaceSettings, the vendor admin and the storefront vendor dashboard. Use this skill when requests mention Orchard Core marketplace, multi-vendor stores, vendor commission, vendor payouts, escrow, or Stripe Connect. Strong matches include CrestApps.OrchardCore.Marketplace, CrestApps.OrchardCore.Marketplace.StripeConnect, Vendor, VendorPart, VendorEarning, VendorPayout, MarketplaceLedger, MarketplaceService, IVendorPayoutProvider, StripeConnectPayoutProvider, StripeConnectVendorService, MarketplaceSettings and ManageMarketplace.
What it loads into context
Frontmatter
224 tokensAlways available to the agent
SKILL.md
2,265 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Sell Other Sellers' Products
- Records
- Settings
- The Ledger
- Stripe Connect
- Custom Payout Provider
- Pages
- Troubleshooting
Files
SKILL.mdcore9,598 bytes
Read SKILL.md
# Orchard Core Marketplace - Prompt Templates
## Sell Other Sellers' Products
You are an Orchard Core expert. Generate accurate setup and extension guidance for the CrestApps Marketplace module, which sells vendors' products, keeps a commission, holds what vendors earn in escrow, and pays them out.
### Guidelines
- Install `CrestApps.OrchardCore.Marketplace` (or the `CrestApps.OrchardCore.Cms.Core.Targets` bundle) in the web/startup project.
- Enable `CrestApps.OrchardCore.Marketplace`. It depends on `CrestApps.OrchardCore.Commerce` and `CrestApps.OrchardCore.Orders`. Selling needs `CrestApps.OrchardCore.Products`, Carts and `CrestApps.OrchardCore.Checkout` with a payment provider (see `orchardcore-products`, `orchardcore-checkout` and `orchardcore-payments`).
- Enable `CrestApps.OrchardCore.Marketplace.StripeConnect` to pay vendors to their own Stripe accounts. It depends on `CrestApps.OrchardCore.Stripe`, and the store's Stripe account must have Connect turned on.
- Attach `VendorPart` to the product types sold for vendors and set `VendorId` on each product.
- Never move money in custom code by writing earnings. Use `MarketplaceService` so sales, refunds, releases and payouts stay idempotent.
- Orders and carts are covered by `orchardcore-orders` and `orchardcore-carts`; the shared Commerce menu and storefront account by `orchardcore-commerce`.View the complete source on GitHuborchardcore-markets
When your agent uses it
Skill for the CrestApps Orchard Core Markets module (CrestApps.OrchardCore.Markets). Covers markets as groups of countries with their own currency, exchange rate, MarketPriceRounding, culture and prices that include tax, how the shopper's market is resolved from the market query value, the X-Market header, the orchard-market cookie and the request culture, the IShopperCurrency seam with ShopperMarketService and ToShopperAsync, IProductSaleRestriction and the Not sold in list, market pricing of products, carts, shipping and the catalog API, MarketCheckoutTaxProfileHandler for tax-inclusive markets, the MarketPicker shape, and the ManageMarkets permission. Use it when requests mention multi-currency storefronts, selling in several countries, currency conversion, VAT-inclusive prices, a market picker or restricting products by country.
What it loads into context
Frontmatter
201 tokensAlways available to the agent
SKILL.md
2,277 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Where it fits in the commerce suite
- The market model
- How the shopper's market is resolved
- The `IShopperCurrency` seam
- What markets change
- Products not sold in a market
- The market picker
- Troubleshooting
Files
SKILL.mdcore9,947 bytes
Read SKILL.md
# CrestApps Markets
Markets (new in CrestApps.OrchardCore 3.0) sells to several countries on their own terms. A `Market` is a set of countries with a currency, an exchange rate from the store's currency, a rounding rule, a culture and whether its prices include tax. The shopper's market decides the currency of product cards, product pages, the cart, the checkout, shipping and the catalog API.
## Where it fits in the commerce suite
| Module | Relationship |
| --- | --- |
| Commerce, Products (`orchardcore-commerce`, `orchardcore-products`) | Required. Markets fills Products.Core seams. |
| Carts (`orchardcore-carts`) | Reprices a cart in the shopper's currency |
| Checkout (`orchardcore-checkout`) | The store currency is `CheckoutSettings.Currency`; rates are relative to it |
| Shipping (`orchardcore-shipping`) | Offers zone methods in the market's currency, or converts the others |
| Taxation (`orchardcore-taxation`) | `PricesIncludeTax` makes checkout taxes inclusive; TaxJar is skipped for inclusive markets |
View the complete source on GitHuborchardcore-memberships
When your agent uses it
Skill for the CrestApps Orchard Core Memberships module (CrestApps.OrchardCore.Memberships), which sells access as a product. Covers the MembershipPart (RoleNames, DurationDays) that makes a product a membership, the Membership record and MembershipStatus (Active, Expired, Revoked), IMembershipStore and MembershipService (GrantAsync, RevokeOrderAsync, EndAsync, ExpireAsync), MembershipPeriods.Extend, MembershipOrderEventHandler built on OrderGrantHandlerBase, MembershipCartLineHandler refusing guests, the hourly MembershipsBackgroundTask, gating content with Content Access Control and RolePickerPart, the Memberships sample recipe, Commerce > Memberships with ManageMemberships, and the storefront account/memberships page. Use it when requests mention selling memberships, paid roles, members-only content bought as a product, or granting something when an order is paid.
What it loads into context
Frontmatter
211 tokensAlways available to the agent
SKILL.md
1,942 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Feature
- Making a product a membership
- How it works
- Gating content
- Granting something else when an order is paid
- Screens and permissions
- Troubleshooting
Files
SKILL.mdcore8,145 bytes
Read SKILL.md
# CrestApps Orchard Core Memberships
Memberships sells access. Attach the **Membership** part to a product type; buying the product puts the buyer in the part's roles for its length, buying again adds time, and a cancellation, a full refund, the end date or the store takes the roles away. Whatever those roles gate (content restricted with Content Access Control, permissions, features) opens and closes with the membership.
Memberships is a one-off purchase through an order. For a renewing, billed-every-cycle plan with roles, use Subscriptions and its entitlements (`orchardcore-subscriptions`). Related skills: `orchardcore-carts` and `orchardcore-orders` (orders and `IOrderEventHandler`), `orchardcore-products`, `orchardcore-checkout`, `orchardcore-content-access-control`, `orchardcore-crestapps-roles`.
## Feature
| Feature ID | Depends on | Fills |
| --- | --- | --- |
| `CrestApps.OrchardCore.Memberships` (`MembershipsConstants.Feature`) | Commerce, `CrestApps.OrchardCore.Orders`, `OrchardCore.Roles` | `IOrderEventHandler`, `ICartLineHandler` |
Install `CrestApps.OrchardCore.Memberships` in the web project. The **Memberships sample** recipe (`MembershipsSample`) enables Contents, Roles, Content Access Control, Products, Carts, Orders, Checkout and Memberships, creates a `Member` role, a members-only **Members' Article** type with one article, and a $49 **Annual Membership** product.
View the complete source on GitHuborchardcore-omnichannel
When your agent uses it
Skill for the CrestApps Orchard Core Omnichannel base module and the map of the Omnichannel module family. Covers the CrestApps.OrchardCore.Omnichannel feature (shared OmnichannelMessage store in the Omnichannel YesSql collection, IOmnichannelProcessor and IOmnichannelEventHandler contracts, OmnichannelEvent and SmsReceived, ISmsProviderRouter), the Omnichannel - Azure Communication Services feature CrestApps.OrchardCore.Omnichannel.AzureCommunicationServices, the inbound webhook map (api/azure/webhook/eventgrid, api/twilio/webhook/sms, api/telnyx/webhook/sms), and which sibling feature to enable. Use this skill when requests mention Orchard Core Omnichannel, Azure Communication Services for Omnichannel, omnichannel processors or event handlers, or choosing Omnichannel features. Strong matches include CrestApps.OrchardCore.Omnichannel.Core, OmnichannelConstants, OmnichannelMessage, OmnichannelEvent, IOmnichannelProcessor, and IOmnichannelEventHandler.
What it loads into context
Frontmatter
248 tokensAlways available to the agent
SKILL.md
2,668 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Choose and Enable Omnichannel Features
- Feature Map
- Enable via Recipe
- Azure Communication Services
- Inbound Webhook Map
- Shared Contracts
- Upgrading from 2.x
Files
SKILL.mdcore10,804 bytes
Read SKILL.md
# Orchard Core Omnichannel (Base Module)
## Choose and Enable Omnichannel Features
You are an Orchard Core expert. Use this skill to pick the right Omnichannel
feature and to build on the shared contracts that every Omnichannel channel
uses. The base feature is plumbing: it stores messages and preferences and
defines contracts. It sends nothing, places no calls and has no admin screens.
### Guidelines
- Install the CrestApps Omnichannel packages in the web/startup project.
- The base feature `CrestApps.OrchardCore.Omnichannel` is enabled by every
other Omnichannel feature through dependencies; you rarely enable it alone.View the complete source on GitHuborchardcore-omnichannel-event-grid
When your agent uses it
Skill for receiving Azure Event Grid events in Orchard Core with the CrestApps Omnichannel - Azure Event Grid feature CrestApps.OrchardCore.Omnichannel.EventGrid. Covers the anonymous POST api/azure/webhook/eventgrid endpoint, aeg-sas-key and Microsoft Entra bearer-token authentication through EventGridOptions, the Event Grid schema requirement, the subscription validation handshake, the 1 MB limit, routing of Azure Communication Services SMSReceived texts onto SmsReceived with de-duplication, stored delivery reports and custom events dispatched to IOmnichannelEventHandler, and troubleshooting. Use this skill when requests mention Omnichannel Event Grid, Azure Event Grid webhooks, ACS inbound SMS, aeg-sas-key, or Event Grid subscription validation. Strong matches include EventGridOptions, AzureEventGridEndpoint, EventGridEventMapper, EventGridEventTypes, and IOmnichannelEventHandler.
What it loads into context
Frontmatter
214 tokensAlways available to the agent
SKILL.md
1,721 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Event Grid Ingestion
- Enable via Recipe
- Configure Authentication
- Create the Subscription
- What Happens to Each Event
- Handle Custom Events
- Troubleshooting
- Upgrading from 2.x
Files
SKILL.mdcore7,371 bytes
Read SKILL.md
# Orchard Core Omnichannel Azure Event Grid
## Configure Event Grid Ingestion
You are an Orchard Core expert. Configure a secure Azure Event Grid webhook for
the CrestApps Omnichannel pipeline, most commonly to receive Azure
Communication Services (ACS) inbound texts.
### Guidelines
- Install `CrestApps.OrchardCore.Omnichannel.EventGrid` in the web/startup
project and enable `CrestApps.OrchardCore.Omnichannel.EventGrid` (it depends
only on `CrestApps.OrchardCore.Omnichannel`).
- The endpoint `POST ~/api/azure/webhook/eventgrid` is anonymous and disablesView the complete source on GitHuborchardcore-omnichannel-management
When your agent uses it
Skill for the CrestApps Omnichannel Management (CRM) module in Orchard Core. Covers CrestApps.OrchardCore.Omnichannel.Activities, ChannelEndpoints, Managements and Crm features; contacts with OmnichannelContactPart, IContactMethodsAccessor, IContactMethodsProvider and IContactMethodsWriter, OmnichannelContactPhoneNumberIndex and IOmnichannelContactPhoneLookup; omnichannel addresses and capabilities; subjects, dispositions, campaigns, subject actions, activity loads, cadences, leads, accounts and opportunities; the automated activity processor, DispositionedBy, CRM reports, permissions, admin lists and the Omnichannel recipe steps. Use this skill when requests mention Omnichannel Management, Interaction Center, CRM contacts, subject flows, activity loads, dispositions, cadences, leads or omnichannel addresses. Strong matches include OmnichannelActivity, OmnichannelActivityBatch, ISubjectActionHandler, IActivityBatchLoader, ILeadConversionService, and AddContactMethodsProvider.
What it loads into context
Frontmatter
236 tokensAlways available to the agent
SKILL.md
5,096 tokensWhen the skill is activated
Reference documents
2,175 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure the Interaction Center
- Features
- Admin Surface
- Contacts and Contact Methods
- Omnichannel Addresses
- Subjects, Dispositions, Campaigns
- Subject Actions
- Activities and Loads
- Reports
- Permissions
- Recipes and Deployment
- Data at Rest
- Upgrading from 2.x
Files
SKILL.mdcore21,151 bytesreferences/cadences.mddoc2,904 bytesreferences/crm.mddoc5,905 bytes
Read SKILL.md
# Orchard Core Omnichannel Management (CRM)
## Configure the Interaction Center
You are an Orchard Core expert. Build contact and activity work on the
Omnichannel Management module's existing model and extension points. Queues,
routing, agents and the dialer belong to the Contact Center
(`orchardcore-contact-center`); the human inbox belongs to
`orchardcore-omnichannel-messaging`.
### Guidelines
- Install `CrestApps.OrchardCore.Omnichannel.Managements` in the web/startup
project and enable `CrestApps.OrchardCore.Omnichannel.Managements`; it bringsView the complete source on GitHuborchardcore-omnichannel-messaging
When your agent uses it
Skill for the CrestApps Omnichannel Messaging Workspace in Orchard Core, a human-operated inbox for every non-voice channel, and its SMS Messaging Channel. Covers CrestApps.OrchardCore.Omnichannel.Messaging, Messaging.Sms and Messaging.RoutedDistribution, SMS setup with per-number providers through ISmsDispatcher, text entry points, STOP START HELP keywords, quiet hours, retries, MMS pictures, AI handoff, templates, broadcasts, the OmnichannelMessageTemplate recipe step, MessagingWorkspaceOptions, the messaging permissions including ViewOwnMessagingConversations and ViewQueueMessagingConversations, AuthorizeConversationAsync, the MessagingHub, and building a channel with IMessagingChannel. Use this skill when requests mention the messaging workspace, messaging inbox, two-way SMS for agents, messaging permissions, adding a channel to the inbox, or upgrading from the SMS Portal. Strong matches include IMessagingChannel, IMessagingInboundProcessor, SmsMessagingChannel, and MessagingConstants.
What it loads into context
Frontmatter
230 tokensAlways available to the agent
SKILL.md
3,121 tokensWhen the skill is activated
Reference documents
1,568 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure the Messaging Workspace
- Features
- Set Up SMS
- Hand-off From AI
- Permissions
- Templates, Broadcasts and Workflows
- Configuration
- Real Time
- Add a Channel
- Upgrading from 2.x
Files
SKILL.mdcore13,063 bytesSKILL.mdcore13,063 bytesreferences/adding-a-channel.mddoc7,264 bytes
Read SKILL.md
# Orchard Core Omnichannel Messaging Workspace
## Configure the Messaging Workspace
You are an Orchard Core expert. Set up the human messaging inbox, its SMS
channel and permissions, and extend it with new channels through its contracts
instead of changing the workspace.
### Guidelines
- Install `CrestApps.OrchardCore.Omnichannel.Messaging` and
`CrestApps.OrchardCore.Omnichannel.Messaging.Sms` in the web/startup project.
- The workspace carries no channel. Enable a channel feature; enabling **SMS
Messaging Channel** enables the workspace and everything it needs.View the complete source on GitHuborchardcore-omnichannel-sms
When your agent uses it
Skill for AI-driven SMS automation in Orchard Core with the CrestApps SMS Omnichannel Automation feature CrestApps.OrchardCore.Omnichannel.Sms. Covers dependencies, automatic SMS activity loads driven by a Chat AI profile, SmsOmnichannelProcessor and SmsOmnichannelEventHandler, the Twilio webhook api/twilio/webhook/sms with signature and Base URL validation, Telnyx and ACS inbound texts, per-number providers, no-response timeout, response delay, opt-out keywords, cadences and business hours, owed-reply recovery and re-engagement tasks, the sms-conclusion-analysis prompt, AI lead conversion, handoff into the messaging workspace, and the AI agent route on text entry points. Use this skill when requests mention Omnichannel SMS automation, AI SMS conversations, automated SMS activities, the Twilio inbound SMS webhook, or SMS opt-out keywords. Strong matches include SmsOmnichannelProcessor, SmsOmnichannelEventHandler, SmsReEngagementBackgroundTask, and SmsEntryPointAIConversationStarter.
What it loads into context
Frontmatter
246 tokensAlways available to the agent
SKILL.md
2,074 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure AI-Driven SMS
- Enable via Recipe
- Set Up an Automated SMS Campaign
- Inbound Webhooks
- Conversation Behavior
- Live Agent Handoff
- Let the AI Answer Incoming Texts
- Extend
- Upgrading from 2.x
Files
SKILL.mdcore8,593 bytes
Read SKILL.md
# Orchard Core Omnichannel SMS Automation
## Configure AI-Driven SMS
You are an Orchard Core expert. Configure the SMS Omnichannel Automation
feature so an AI chat profile carries SMS conversations for automated
activities, and connect the SMS provider's inbound webhook so customer replies
reach the AI.
### Guidelines
- Install `CrestApps.OrchardCore.Omnichannel.Sms` in the web/startup project and
enable `CrestApps.OrchardCore.Omnichannel.Sms`.
- Its manifest depends on `CrestApps.OrchardCore.AI`,View the complete source on GitHuborchardcore-omnichannel-voice
When your agent uses it
Skill for the CrestApps Automated Voice module in Orchard Core, the provider-neutral AI voice conversation loop for automated phone activities and AI voice entry points. Covers the CrestApps.OrchardCore.Omnichannel.Voice feature and its dependencies, pairing it with Telnyx AI Voice Agent, automatic Phone activity loads, the voice settings cascade, realtime speech-to-speech versus the turn-based loop, silence, voicemail, handoff, the endCall tool, session-loss recovery, the voice-conclusion-analysis and voice-handoff-summary prompts, stranded call recovery, and adding automated voice to a telephony provider through IVoiceAgentMediaProvider, VoiceAgentEvent and IVoiceAgentConversationLoop. Use this skill when requests mention Orchard Core automated voice, AI phone calls, AI voice agent, outbound AI calling, or voice call conclusion. Strong matches include OmnichannelVoiceConstants, VoiceAgentConversationLoop, IVoiceAgentMediaProvider, EndCallTool, and StrandedVoiceCallRecoveryBackgroundTask.
What it loads into context
Frontmatter
236 tokensAlways available to the agent
SKILL.md
2,145 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Run AI Voice Conversations
- Enable via Recipe
- Outbound AI Calls
- Inbound AI Calls
- Call Behavior
- Add Automated Voice to a Telephony Provider
- Upgrading from 2.x
Files
SKILL.mdcore9,145 bytesSKILL.mdcore9,145 bytes
Read SKILL.md
# Orchard Core Automated Voice
## Run AI Voice Conversations
You are an Orchard Core expert. Configure the Automated Voice feature so an AI
chat profile holds phone conversations for automated activities and AI voice
entry points, over whichever telephony provider carries the call.
### Guidelines
- Install `CrestApps.OrchardCore.Omnichannel.Voice` in the web/startup project.
Enable `CrestApps.OrchardCore.Omnichannel.Voice` (**Automated Voice**). It
depends on `CrestApps.OrchardCore.Telephony`, `CrestApps.OrchardCore.AI`,
`CrestApps.OrchardCore.AI.Chat.Core` andView the complete source on GitHuborchardcore-orders
When your agent uses it
Skill for the CrestApps Orchard Core Orders module (CrestApps.OrchardCore.Orders, Orders.GiftCards, Orders.Returns, Orders.Api). Covers checking a cart out as a draft order through the Checkout framework with CheckoutReferenceTypes.Order, OrderCheckoutHandler, order statuses and cancel reasons, IOrderService, IOrderEventHandler and OrderEventHandlerBase (created, paid, canceled, refunded, returned, lines changed), OrderGrantHandlerBase, OrderOperationsService refunds and cancels, guest order links with IOrderLinkService, confirmations and ICommerceEmailSender with AddCommerceEmailKind and Liquid email templates, IOrderEmailSectionProvider, invoices and packing slips, draft orders and quotes, sales channels, order bumps, gift cards, returns, order reports, workflow events, IDisplayManager of Order display types, OrderSettings, and the Orders API. Use it when requests mention Orchard Core orders, order events, refunds, invoices, gift cards, returns, quotes, order emails or the orders API.
What it loads into context
Frontmatter
238 tokensAlways available to the agent
SKILL.md
2,669 tokensWhen the skill is activated
Reference documents
1,729 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Where it fits in the commerce suite
- Features
- Checking out
- Order events
- Managing an order
- Order pages and display types
- Customer emails
- Guest access and the storefront account
- Orders API
- Permissions
Files
SKILL.mdcore11,558 bytesreferences/order-features.mddoc6,851 bytes
Read SKILL.md
# CrestApps Orders
Orders (new in CrestApps.OrchardCore 3.0) checks a cart out through the Checkout framework and records what was bought. An order holds lines, not money: the payment, tax, attempts and refunds belong to the checkout session the order names.
## Where it fits in the commerce suite
| Module | Relationship |
| --- | --- |
| Carts (`orchardcore-carts`) | Required. The cart is frozen into a draft order. |
| Checkout (`orchardcore-checkout`) | Required. Takes payment, coupons, tenders and tax for the order. |
| Payments, Pay Later, Transactions (`orchardcore-payments`, `orchardcore-pay-later`, `orchardcore-transactions`) | Collect and refund the money |
| Customers (`orchardcore-customers`) | Adds the Contact step, links `Order.CustomerId`, store credit refunds |
| Inventory (`orchardcore-inventory`) | Holds, sells, releases and restocks through order events |
| Shipping (`orchardcore-shipping`) | Adds the Shipping step, `Order.Shipping`, shipments and `FulfillmentStatus` |View the complete source on GitHuborchardcore-pay-later
When your agent uses it
Skill for the CrestApps Orchard Core Pay Later module (CrestApps.OrchardCore.PayLater), the offline payment methods of the checkout. Covers the Pay Later, Bank transfer and Cash on delivery providers (keys pay-later, bank-transfer, cash-on-delivery) built on OfflineCheckoutPaymentProvider with DefersPayment, PayLaterSettings, BankTransferSettings and CashOnDeliverySettings under Settings > Commerce > Offline payments, net terms and due dates, PayLaterTransactionCheckoutHandler recording each commitment as an outstanding transaction, recurring Pay Later commitments and PayLaterRenewalBackgroundTask, why deferred providers never settle an existing balance, ICheckoutPaymentProviderAvailability and ICheckoutPaymentProviderDescription, the confirmation and order display drivers, and adding a custom offline method such as purchase orders. Use it when requests mention pay later, invoicing at checkout, bank transfer, cash on delivery, offline payments, or a balance owed after checkout.
What it loads into context
Frontmatter
221 tokensAlways available to the agent
SKILL.md
2,019 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Feature
- Methods
- What happens at completion
- A custom offline method
- Upgrading from 2.x
- Troubleshooting
Files
SKILL.mdcore9,325 bytesSKILL.mdcore9,325 bytes
Read SKILL.md
# CrestApps Orchard Core Pay Later
Pay Later adds offline payment methods to the checkout. They record a promise to pay instead of moving money, through the same durable ledger and reconciliation as a gateway, and leave a balance in the Transactions ledger that the customer pays later (online from **My Transactions** or a pay link) or the store records by hand.
Related skills: `orchardcore-checkout` (providers, payment step), `orchardcore-transactions` (the balance, reminders, **Record payment**), `orchardcore-payments` (provider contracts), `orchardcore-subscriptions` (recurring plans on Pay Later), `orchardcore-carts` and `orchardcore-orders` (orders paid offline show *Payment due*).
## Feature
| Feature ID | Category | Depends on |
| --- | --- | --- |
| `CrestApps.OrchardCore.PayLater` (`PayLaterConstants.Features.Area`) | Commerce | `CrestApps.OrchardCore.Checkout`, `CrestApps.OrchardCore.Transactions` |
Install `CrestApps.OrchardCore.PayLater` in the web project. Enabling the feature offers nothing until a method is turned on in its settings.
View the complete source on GitHuborchardcore-payments
When your agent uses it
Skill for the CrestApps Orchard Core payment foundations and the Stripe provider (CrestApps.OrchardCore.Payments.Abstractions, CrestApps.OrchardCore.Stripe) plus Subscriptions - Installment Plans (CrestApps.OrchardCore.Subscriptions.Installments). Covers Money and CurrencyScale, IPaymentEvent and PaymentEventBase, adding a gateway with ICheckoutPaymentProvider, PaymentProviderCapabilities, ICheckoutPaymentRefundProvider, ICheckoutRecurringPaymentProvider and ICheckoutSavedPaymentMethodProvider, refunds through ICheckoutRefundService, Stripe settings, the CrestApps_Stripe configuration section, the StripeSettings recipe step, the stripe/webhook endpoint, Stripe workflow events, saved cards and wallets, and installment plans with IInstallmentPlanService, IInstallmentOptionProvider and InstallmentPlanSettings. Use it when requests mention Stripe, a payment gateway, refunds, webhooks, saved cards or payment plans in CrestApps Orchard Core commerce.
What it loads into context
Frontmatter
224 tokensAlways available to the agent
SKILL.md
3,356 tokensWhen the skill is activated
Reference documents
3,987 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Features and packages
- Guidelines
- Adding a gateway
- Payment events
- Refunds
- Stripe
- Upgrading from 2.x
- Troubleshooting
Files
SKILL.mdcore14,804 bytesSKILL.mdcore14,804 bytesreferences/custom-payment-provider.mddoc8,389 bytesreferences/installment-plans.mddoc10,396 bytes
Read SKILL.md
# CrestApps Orchard Core Payments and Stripe
Payments are provider-neutral. A gateway is an `ICheckoutPaymentProvider` registered on the tenant; the checkout engine drives it, the durable ledger records it, and every consumer stays unaware of which gateway took the money. Stripe is the shipped card gateway. Installment plans (a Subscriptions sub-feature) build on the same contracts to keep a card and charge it on a schedule.
Related skills: `orchardcore-checkout` (the engine, steps, test provider), `orchardcore-transactions` (ledger screens, refunds console), `orchardcore-pay-later` (offline providers), `orchardcore-subscriptions` (recurring agreements), `orchardcore-taxation`.
## Features and packages
| Feature ID | Name | Depends on | Notes |
| --- | --- | --- | --- |
| `CrestApps.OrchardCore.Stripe` | Stripe (Payment Providers) | `CrestApps.OrchardCore.Users` | With Checkout enabled it registers the card provider (key `Stripe`) automatically; with Workflows it adds Stripe events; with Point of Sale it adds `stripe-terminal` |
| `CrestApps.OrchardCore.Subscriptions.Installments` | Subscriptions - Installment Plans | Transactions, Checkout, `OrchardCore.Users` | Does not need the Subscriptions feature or Products; see [references/installment-plans.md](references/installment-plans.md) |
`CrestApps.OrchardCore.Payments.Abstractions` is a contracts package (namespace `CrestApps.OrchardCore.Payments`): `Money`, `CurrencyScale`, `GatewayMode` (`Live`, `Testing`), `IPaymentEvent`, `PaymentEventBase`, the event contexts and `RemoteSubscriptionStatus`. Provider contracts are in `CrestApps.OrchardCore.Checkout.Abstractions` (`CrestApps.OrchardCore.Checkout.Services`). Install `CrestApps.OrchardCore.Stripe` in the web/startup project.View the complete source on GitHuborchardcore-phone-number-verifications
When your agent uses it
Skill for verifying and revalidating phone numbers on Orchard Core content items with pluggable providers. Covers the dependency-only CrestApps.OrchardCore.PhoneNumbers.Verifications feature and its AbstractApi, Veriphone and Twilio provider features, provider configuration and permissions, PhoneNumberVerificationPart, provider results, resilient provider HTTP clients that never replay unsafe requests, background revalidation, SQL indexing, the Phone Verifications Queue admin list, the shared Reports integration, and Omnichannel contact integration through IContactMethodsAccessor. Use this skill when requests mention Orchard Core phone verification, phone validation APIs, verification queues, or revalidating contact numbers. Strong matches include work with CrestApps.OrchardCore.PhoneNumbers.Verifications, IPhoneNumberVerificationManager, IPhoneNumberVerificationProvider, PhoneNumberVerificationPart, PhoneNumberVerificationResult, and PhoneNumberRevalidationBackgroundTask.
What it loads into context
Frontmatter
210 tokensAlways available to the agent
SKILL.md
3,011 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Verify Contact Phone Numbers
- Architecture
- Configure Settings
- Attach the Content Part
- Explicit Verification
- Result and Status Semantics
- Background Revalidation and Queue
- Reporting
- Omnichannel Contacts
- Custom Providers
- Upgrading from 2.x
- Troubleshooting
Files
SKILL.mdcore14,939 bytesSKILL.mdcore14,939 bytes
Read SKILL.md
# Orchard Core Phone Number Verifications - Prompt Templates
## Verify Contact Phone Numbers
You are an Orchard Core expert. Generate accurate code, settings, recipes, and integration guidance for the CrestApps Phone Number Verifications module. It is a provider-agnostic framework that persists verification data on content items and supports later revalidation.
### Guidelines
- Install `CrestApps.OrchardCore.PhoneNumbers.Verifications` in the web/startup project.
- Enable a provider feature; the core feature is `EnabledByDependencyOnly` and is turned on by the provider's dependency.
- The core feature depends on `OrchardCore.Contents`, `CrestApps.OrchardCore.Resources`, and `CrestApps.OrchardCore.PhoneNumbers`.
- Attach `PhoneNumberVerificationPart` only to content types representing a contact or another verified number owner.
- Use `IPhoneNumberVerificationManager` to select and invoke the configured provider.
- Store results with `PhoneNumberVerificationPartExtensions`, not a hand-written parallel data structure.View the complete source on GitHuborchardcore-phone-numbers
When your agent uses it
Skill for using CrestApps Orchard Core phone-number parsing, validation, E.164 normalization, display formatting, region lookup, and time-zone lookup services. Covers the dependency-only CrestApps.OrchardCore.PhoneNumbers feature, IPhoneNumberService, the canonical PhoneNumber value type with TryParse, FromE164 and TryFromE164, FormatForDisplay, PhoneNumberComparisonKey for matching stored raw values, and how DNC screening, verifications, Omnichannel and the soft phone consume canonical numbers. Use this skill when requests mention Orchard Core phone numbers, E.164 formatting, libphonenumber, country calling codes, phone number display formatting, or phone number time zones. Strong matches include work with CrestApps.OrchardCore.PhoneNumbers, CrestApps.OrchardCore.PhoneNumbers.Abstractions, IPhoneNumberService, DefaultPhoneNumberService, PhoneNumber, PhoneNumberServiceExtensions, PhoneNumberComparisonKey, and TryFormatToE164.
What it loads into context
Frontmatter
228 tokensAlways available to the agent
SKILL.md
2,519 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Normalize and Validate Phone Numbers
- `IPhoneNumberService` Operations
- Normalize at the Boundary
- The `PhoneNumber` Value Type
- Validate Input
- Region and Calling-Code Lookups
- Phone-Number Time Zones
- Persistence Pattern
- Integrations
- Handling Failures
- Avoid These Patterns
Files
SKILL.mdcore11,029 bytes
Read SKILL.md
# Orchard Core Phone Numbers - Prompt Templates
## Normalize and Validate Phone Numbers
You are an Orchard Core expert. Generate code and configuration for the CrestApps Phone Numbers services. This infrastructure module provides parsing, validation, E.164 normalization, region lookup, country-code lookup, and phone-number time-zone lookup.
### Guidelines
- Install `CrestApps.OrchardCore.PhoneNumbers` in the web/startup project. Code that only consumes the contracts references `CrestApps.OrchardCore.PhoneNumbers.Abstractions` (namespace `CrestApps.OrchardCore.PhoneNumbers`).
- Enable `CrestApps.OrchardCore.PhoneNumbers`; it is marked dependency-only and normally activates through a dependent feature.
- Resolve `IPhoneNumberService` rather than parsing numbers with string manipulation.
- Store normalized phone numbers in E.164 format for comparisons, indexes, DNC lists, and external APIs.
- Pass canonical numbers between services as the `PhoneNumber` value type (built with `IPhoneNumberService.TryParse`), not as raw strings. DNC registries require it.
- Show numbers to people with `FormatForDisplay`; store and dial E.164.View the complete source on GitHuborchardcore-point-of-sale
When your agent uses it
Skill for the CrestApps Orchard Core Point of Sale commerce module. Covers registers at inventory locations, shifts with an opening float, cash movements and a counted close, counter sales created as orders on the checkout framework, the cash tender, the pos-card counter terminal payment method, Stripe Terminal readers, receipts as data or Receipts HTML, returns at the till, and the point-of-sale endpoints of the commerce JSON API that a till app calls. Use this skill when requests mention Orchard Core point of sale, POS, till app, cash register, register shifts, cash drawer, counter sales, Stripe Terminal, card readers, or in-store returns. Strong matches include CrestApps.OrchardCore.PointOfSale, Register, RegisterShift, RegisterShiftSummary, PosSaleService, PosShiftService, PosCashTenderProvider, PosCounterCardPaymentProvider, StripeTerminalPaymentProvider, CheckoutCounterSale, OrderChannels.PointOfSale, SellAtRegister and ManageRegisters.
What it loads into context
Frontmatter
226 tokensAlways available to the agent
SKILL.md
2,588 tokensWhen the skill is activated
Reference documents
2,129 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Sell at the Counter
- Model
- How a Sale Works
- API Summary
- Permissions
- Troubleshooting
Files
SKILL.mdcore10,210 bytesreferences/pos-api-examples.mddoc6,481 bytes
Read SKILL.md
# Orchard Core Point of Sale - Prompt Templates
## Sell at the Counter
You are an Orchard Core expert. Generate accurate setup, API and extension guidance for the CrestApps Point of Sale module, which sells at a store's counter from a till app over the commerce API. Each sale is an ordinary order paid through the checkout framework, so prices, coupons, gift cards, tax, stock holds, order events and reports work as online.
### Guidelines
- Install `CrestApps.OrchardCore.PointOfSale` (or the `CrestApps.OrchardCore.Cms.Core.Targets` bundle) in the web/startup project.
- Enable `CrestApps.OrchardCore.PointOfSale`. It depends on `CrestApps.OrchardCore.Commerce`, `CrestApps.OrchardCore.Orders`, `CrestApps.OrchardCore.Inventory` and `CrestApps.OrchardCore.Checkout.Api` (the commerce JSON API, see `orchardcore-checkout` and `orchardcore-commerce`).
- Products come from `CrestApps.OrchardCore.Products` (see `orchardcore-products`). Registers sell from Inventory locations.
- Optional: `CrestApps.OrchardCore.Receipts` for printable and emailed receipts, `CrestApps.OrchardCore.Customers` for named buyers (see `orchardcore-customers`), gift cards, and `CrestApps.OrchardCore.Stripe` for Stripe Terminal readers (see `orchardcore-payments`).
- Every API call is made by a signed-in staff member with a bearer token and **Sell at a register**. Send an `Idempotency-Key` header on calls that take one, so a dropped connection never rings a sale twice.
- Store credit and loyalty points are not offered at a register.View the complete source on GitHuborchardcore-products
When your agent uses it
Skill for the CrestApps Orchard Core Products module and its search modules. Covers ProductPart and ProductPartSettings (price, currency, SKU, sales mode, price display), the Currencies catalog and recipe step, ProductPricePart for one-time or recurring prices, ProductVariantsPart, IProductSnapshotResolver, IPriceResolver, IBuyerPriceProvider, IProductAvailabilityProvider, merchandising (sales, quantity rules, discounts, add-ons), Product Listing pages with filters, sorts, ProductFacetStyleOptions and shapes, IProductSearchDocumentContributor, IProductListingEntryProvider, IProductSearchIndexRefresher, Product Recommendations, Comparison, Grouped Products, Bundles, Product Feeds, the Catalog API, and product search on Lucene, Elasticsearch and Azure AI Search (CrestApps.OrchardCore.Products.Lucene, Products.Elasticsearch, Products.AzureAI). Use it when requests mention Orchard Core products, a product catalog, product listings, variants, prices, currencies or product search.
What it loads into context
Frontmatter
232 tokensAlways available to the agent
SKILL.md
3,405 tokensWhen the skill is activated
Reference documents
2,574 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Where it fits in the commerce suite
- Features
- ProductPart
- Currencies
- Several prices and variants
- The sellable snapshot and price seams
- Product Listing
- Samples
- Permissions
- Upgrading within the 3.0 line
Files
SKILL.mdcore14,552 bytesreferences/merchandising-and-feeds.mddoc4,311 bytesreferences/product-listing.mddoc6,504 bytes
Read SKILL.md
# CrestApps Products
Products (new in CrestApps.OrchardCore 3.0) turns any content type into a product by attaching `ProductPart`. It owns prices, currencies, variants, the sellable snapshot, the price seam and the front-end product listing. It never calculates tax or takes payment.
## Where it fits in the commerce suite
| Module | Relationship |
| --- | --- |
| Commerce (`orchardcore-commerce`) | Required shell |
| Carts, Orders (`orchardcore-carts`, `orchardcore-orders`) | Sell products with one-time prices through a cart |
| Subscriptions (`orchardcore-subscriptions`) | Sells products with recurring prices; plan types carry the Product part |
| Inventory (`orchardcore-inventory`) | Implements `IProductAvailabilityProvider` and the In stock filter |
| Markets (`orchardcore-markets`) | Implements `IShopperCurrency` and `IProductSaleRestriction` |
| Shipping (`orchardcore-shipping`) | Adds weights and classes through `ShippingPart` |View the complete source on GitHuborchardcore-receipts
When your agent uses it
Skill for the CrestApps Orchard Core Receipts module (CrestApps.OrchardCore.Receipts), the reusable builder of branded, printable proof-of-purchase documents. Covers IReceiptService.BuildAsync with ReceiptRequest, ReceiptDocument, ReceiptLineItem, ReceiptTaxLine and ReceiptStatus (Paid, Pending, Failed, Due), IReceiptHtmlRenderer for email bodies, the shared ReceiptDocument.cshtml partial, ReceiptSettings branding under Settings > Commerce > Receipts with the ManageReceiptSettings permission, and how Transactions, Orders and Point of Sale consume it for receipts, invoices and packing slips. Use it when requests mention printable receipts, invoice branding, receipt layout, a test-payment badge, or rendering a receipt from a custom module.
What it loads into context
Frontmatter
182 tokensAlways available to the agent
SKILL.md
1,569 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Feature
- Layers
- Building a receipt
- Settings
- Consumers
- Upgrading from 2.x
Files
SKILL.mdcore6,711 bytesSKILL.mdcore6,711 bytes
Read SKILL.md
# CrestApps Orchard Core Receipts
Receipts turns purchase data a module already holds into a branded, printable document. It stores nothing: the consumer's ledger stays the source of truth and the receipt is built on demand. Transactions (payment receipts and invoices), Orders (invoices and packing slips) and Point of Sale use it.
Related skills: `orchardcore-transactions` (printable invoices and receipts, the Send Payment Receipts feature and `R-`/`INV-` numbering), `orchardcore-orders`, `orchardcore-commerce` (store setup step that fills the store details).
## Feature
| Feature ID | Name | Category |
| --- | --- | --- |
| `CrestApps.OrchardCore.Receipts` | Receipts | Commerce |
`ReceiptsConstants.Feature.Area`; settings group `receipts` (`ReceiptsConstants.SettingsGroupId`). Subscriptions depends on it. Install `CrestApps.OrchardCore.Receipts` in the web project; a module that only builds receipts references `CrestApps.OrchardCore.Receipts.Abstractions` (no commerce dependencies).
View the complete source on GitHuborchardcore-report-builder
When your agent uses it
Skill for the CrestApps Orchard Core Report Builder (CrestApps.OrchardCore.Reports.Builder), the drag-and-drop report designer built on Orchard Core Data Pipelines Core (OrchardCore.DataPipelines.Core). Covers ReportDesign and ReportView, data sets from Orchard Core data sources (IDataSource, RecordDataSource, RecordDataSet, AddDataSource) such as Contents, Users, Queries, ReportViews, Omnichannel, ContactCenter, AIChat and Messaging, joins, calculated fields and formulas, exposed filters, charts and pivots, ReportDesignerPermissions and the owner's-access model, share links with ISharedLinkManager, drafts, versions and SignalR presence, ReportIndexPages, ReportIndexConditions and ReportIndexAggregator for large data, scheduled views, ReportQueryLimits, the ReportDesigns recipe and deployment steps, workflow tasks, and IReportEventHandler. Use this skill when requests mention the Report Builder, designed or custom reports, report views, a report data source, report formulas, or sharing reports.
What it loads into context
Frontmatter
242 tokensAlways available to the agent
SKILL.md
4,905 tokensWhen the skill is activated
Reference documents
11,006 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Feature
- Architecture
- Data sources
- Permissions and the owner's-access model
- Pages and URLs
- Configuration
- Large data
- Drafts, versions and real time
- Recipes, deployment and workflows
- Troubleshooting
Files
SKILL.mdcore20,691 bytesSKILL.mdcore20,691 bytesSKILL.mdcore20,691 bytesSKILL.mdcore20,691 bytesSKILL.mdcore20,691 bytesSKILL.mdcore20,691 bytesSKILL.mdcore20,691 bytesSKILL.mdcore20,691 bytesreferences/custom-data-sources.mddoc25,041 bytesreferences/designs-recipes-and-workflows.mddoc12,575 bytesreferences/formulas.mddoc8,221 bytes
Read SKILL.md
# CrestApps Orchard Core Report Builder
The **Report Builder** feature of the Reports module lets people design reports in the browser: add data sets from any data source, join them (inner, left, right, full), add calculated fields, filter rows or results (and let viewers change chosen filters), group and aggregate, and show tables, charts, headline metrics and pivot tables. Designed reports render through the same renderer and export formats as coded reports (see `orchardcore-reports`), can be pinned to the admin menu, shared with users and roles, and opened through expiring share links.
New in CrestApps.OrchardCore 3.0. The data source contract, the formula language and share links come from Orchard Core 4.0's **Data Pipelines Core** feature (see the `orchardcore-data-sources` and `orchardcore-data-pipelines` skills).
## Feature
| | |
| --- | --- |
| **Feature ID** | `CrestApps.OrchardCore.Reports.Builder` (`ReportsConstants.BuilderFeature`) |
| **Dependencies** | `CrestApps.OrchardCore.Reports`, `OrchardCore.DataPipelines.Core` |
| **Optional integrations** | `OrchardCore.Contents` and `OrchardCore.Queries` (data sources), `OrchardCore.Workflows` and `OrchardCore.Email` (workflow activities, share link emails), `OrchardCore.SignalR` (presence), `OrchardCore.Recipes.Core` and `OrchardCore.Deployment` (recipe and deployment steps), `CrestApps.OrchardCore.Reports.OpenXml` (Excel export) |
View the complete source on GitHuborchardcore-reports
When your agent uses it
Skill for building on the CrestApps Orchard Core Reports framework (CrestApps.OrchardCore.Reports, CrestApps.OrchardCore.Reports.OpenXml, CrestApps.OrchardCore.Reports.Subscriptions). Covers coded reports with static IReport descriptors and services.AddReport, report families with IReportRunner, ReportDescriptor and ReportOptions, ReportContext and ReportRunMode, the ReportFilter helpers GetDateRange, SetDateRange, TryGet, GetOrDefault and Set, report filter display drivers and IReportFilterMetadata, ReportDocument metrics, tables, bars and charts, ReportStyle cell colors, CSV and Excel exports with IReportExportFormat and AddReportExportFormat, IReportManager, IReportExportManager, the today default date range, scheduled report subscriptions, and upgrading 2.x reports. Use this skill when requests mention the admin Reports area, writing a report, adding a report filter or export format, or report troubleshooting. For designed reports use orchardcore-report-builder.
What it loads into context
Frontmatter
234 tokensAlways available to the agent
SKILL.md
4,958 tokensWhen the skill is activated
Reference documents
2,093 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Features
- Layers and namespaces
- Contribute a report
- ReportContext and run mode
- The report document
- Filters
- A family of reports
- Using reports from code
- Export formats
- Admin area
- Report subscriptions
- Upgrading from 2.x
- Troubleshooting
Files
SKILL.mdcore21,540 bytesreferences/reports-examples.mddoc10,028 bytes
Read SKILL.md
# CrestApps Orchard Core Reports
The Reports module is a reusable reporting framework. It adds one admin **Reports** area and a small contract any module implements to publish a report. Every report shares the same filter form, the same renderer (metric cards, tables, bars, Chart.js charts) and the same exports (CSV built in, Excel with an add-on). Modules such as Omnichannel, Contact Center, Phone Number Verifications, Orders and Inventory contribute their reports through it.
Designed reports that people build in the browser are the **Report Builder** feature; see the `orchardcore-report-builder` skill.
## Features
| Feature ID | Name | What it adds | Depends on |
| --- | --- | --- | --- |
| `CrestApps.OrchardCore.Reports` | Reports | Admin **Reports** area, `ReportFilter` with the date range filter, renderer, CSV export | `CrestApps.OrchardCore.Resources`, `OrchardCore.Users` |
| `CrestApps.OrchardCore.Reports.OpenXml` | Reports (OpenXml) | Excel `.xlsx` export (`DocumentFormat.OpenXml`) | Reports |
| `CrestApps.OrchardCore.Reports.Subscriptions` | Report Subscriptions | Emails any registered report daily, weekly or monthly | Reports, `OrchardCore.Email` |
| `CrestApps.OrchardCore.Reports.Builder` | Report Builder | Drag-and-drop designed reports (see `orchardcore-report-builder`) | Reports, `OrchardCore.DataPipelines.Core` |View the complete source on GitHuborchardcore-reviews
When your agent uses it
Skill for the CrestApps Orchard Core Product Reviews commerce module. Covers verified-purchase ProductReview records with a 1 to 5 rating, moderation under Commerce Reviews, ReviewSettings RequireApproval, BuyersOnly and review requests, review photos in the media store, the ProductRating and ProductReviews shapes on product pages, average rating and review count written to the product listing search record, the Customer rating filter and sort, and the IProductListingEntryProvider and IProductSearchDocumentContributor seams. Use this skill when requests mention Orchard Core product reviews, star ratings, verified purchase, review moderation, review request emails, or filtering and sorting listings by rating. Strong matches include CrestApps.OrchardCore.Reviews, ProductReview, ReviewSettings, ReviewService, ProductRatingReader, ReviewPhotoStore, ReviewRequestService, ReviewSearchDocumentContributor, ReviewListingEntryProvider, ProductAttributeKeys.Rating, ManageProductReviews and SubmitProductReviews.
What it loads into context
Frontmatter
220 tokensAlways available to the agent
SKILL.md
2,076 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Let Buyers Review Products
- Model and Settings
- Submitting and Photos
- Review Requests
- Moderation
- Ratings in Listings
- Troubleshooting
Files
SKILL.mdcore9,082 bytesSKILL.mdcore9,082 bytes
Read SKILL.md
# Orchard Core Product Reviews - Prompt Templates
## Let Buyers Review Products
You are an Orchard Core expert. Generate accurate setup and extension guidance for the CrestApps Product Reviews module, which lets buyers rate and review products they bought, moderated by the store, with stars on product pages and an average rating that listings filter and sort by.
### Guidelines
- Install `CrestApps.OrchardCore.Reviews` (or the `CrestApps.OrchardCore.Cms.Core.Targets` bundle) in the web/startup project.
- Enable `CrestApps.OrchardCore.Reviews`. It depends on `CrestApps.OrchardCore.Commerce`, `CrestApps.OrchardCore.Products`, `CrestApps.OrchardCore.Orders` and `OrchardCore.Contents` (see `orchardcore-products`).
- Ratings in listings need the Products **Product Listing** feature `CrestApps.OrchardCore.Products.Listing` (`ListingStartup` runs only then).
- Review photos need Orchard Core's Media feature. Review requests need `OrchardCore.Email` and `CrestApps.OrchardCore.Customers` (see `orchardcore-customers`), plus the site **Base URL**.
- Do not add a fixed Rating field to products. The module writes customer ratings to the listing search record.
- Orders and carts are covered by `orchardcore-orders` and `orchardcore-carts`; the shared Commerce menu and storefront account by `orchardcore-commerce`.View the complete source on GitHuborchardcore-shipping
When your agent uses it
Skill for the CrestApps Orchard Core Shipping module (CrestApps.OrchardCore.Shipping, Shipping.EasyPost, Shipping.Api). Covers ShippingZone and ShippingMethod with the Flat, Table, Free, LocalDelivery and Carrier rate providers, IShippingRateService, IShippingRateProvider with ShippingRateContext and CreateRate, ShippingPart weights and classes, ShippingSettings (weight unit, classes, carriers and tracking templates, pickup locations, ship-from address and parcel defaults), the checkout Shipping step and CheckoutShippingInfo, store pickup, shipments with IShipmentService and IShipmentEventHandler, ICarrierProvider and EasyPost labels, tracking and webhook, the ShippingZones recipe and deployment step, shipment workflow events, and the Shipping API. Use it when requests mention Orchard Core shipping rates, shipping zones, carriers, labels, tracking, store pickup, local delivery or fulfilment.
What it loads into context
Frontmatter
209 tokensAlways available to the agent
SKILL.md
2,753 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Where it fits in the commerce suite
- Features
- Model
- Rates
- Checkout
- Shipments
- Carriers and EasyPost
- Shipping API
- Admin and permissions
Files
SKILL.mdcore11,415 bytes
Read SKILL.md
# CrestApps Shipping
Shipping (new in CrestApps.OrchardCore 3.0) prices shipping and records shipments. Zones say where; each zone's methods say how and what it costs through rate providers. Products carry weight and shipping class in the **Shipping** part.
## Where it fits in the commerce suite
| Module | Relationship |
| --- | --- |
| Commerce, Products (`orchardcore-commerce`, `orchardcore-products`) | Required |
| Orders (`orchardcore-orders`) | Required. Adds the Shipping step to an order's checkout and fills `Order.Shipping`, `ShippingAddress`, `FulfillmentStatus` |
| Addresses (`orchardcore-addresses`) | Required. Zones and rates work on the shared `Address` |
| Checkout (`orchardcore-checkout`) | The shipping line is a taxed billing item; the shipping address becomes the tax destination |
| Customers (`orchardcore-customers`) | Optional address book on the step |
| Inventory (`orchardcore-inventory`) | Pickup locations take units from a stock location |View the complete source on GitHuborchardcore-signalr
When your agent uses it
Skill for SignalR in CrestApps Orchard Core 3.0, where hosting moved to the Orchard Core framework. Covers migrating from the deprecated CrestApps.OrchardCore.SignalR, CrestApps.OrchardCore.SignalR.Redis and CrestApps.OrchardCore.SignalR.Azure compatibility features to OrchardCore.SignalR, OrchardCore.SignalR.Redis and OrchardCore.SignalR.Azure, mapping hubs with SignalRHubRoutes.GetHubPath, tenant-aware client URLs with Html.SignalRHubUrl, tenant-isolated user and group destinations with TenantSignalRGroupName, the HubConnectionWork cancellation convention, the signalr script resource, and Redis or Azure SignalR backplanes. Use this skill when requests mention Orchard Core SignalR, CrestApps SignalR, tenant-aware hubs, HubRouteManager removal, real-time notifications, SignalR backplanes, or hub URLs under a tenant prefix. Strong matches include OrchardCore.SignalR, SignalRHubRoutes, SignalRHubUrl, TenantSignalRGroupName, HubConnectionWork, SignalRConstants, MapHub, and HubOptions.
What it loads into context
Frontmatter
250 tokensAlways available to the agent
SKILL.md
2,436 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Build Tenant-Aware SignalR Features
- Define and Map a Hub
- Connect from a View
- Tenant-Isolated Destinations
- Scale-Out
- Upgrading from 2.x
- Common Failures
Files
SKILL.mdcore10,325 bytesSKILL.mdcore10,325 bytes
Read SKILL.md
# Orchard Core SignalR - Prompt Templates
## Build Tenant-Aware SignalR Features
You are an Orchard Core expert. Generate accurate hub, route, resource, and client code for SignalR in CrestApps Orchard Core 3.0. SignalR hosting now lives in the Orchard Core framework (`OrchardCore.SignalR`); CrestApps contributes only routing and tenant-isolation helpers that every CrestApps hub follows.
### Guidelines
- Enable `OrchardCore.SignalR` for new work. The CrestApps SignalR features are deprecated compatibility shims.
- CrestApps modules that use SignalR (AI Chat, Chat Interactions, Contact Center, Omnichannel Messaging, Telephony, Reports) depend on `OrchardCore.SignalR` directly.
- Map hubs with `routes.MapHub<T>(SignalRHubRoutes.GetHubPath<T>())`. `HubRouteManager` was removed in 3.0.
- Build browser URLs with `Html.SignalRHubUrl<T>()` (adds the request path base), never a hard-coded path or tenant prefix.
- Use the framework `signalr` script resource as a dependency instead of copying the client library.
- Send per-user or per-group messages to `TenantSignalRGroupName` destinations, never to a bare `Clients.User(userId)` or an unqualified group name.View the complete source on GitHuborchardcore-subscriptions
When your agent uses it
Skill for the CrestApps Orchard Core Subscriptions module (CrestApps.OrchardCore.Subscriptions, CrestApps.OrchardCore.Subscriptions.Tenants, CrestApps.OrchardCore.Subscriptions.Installments). Covers plans with the Subscription stereotype and SubscriptionPart (billing cycle, setup fee, cycle limit, delayed start, TrialDays), signup through the shared checkout at Subscription/Signup, the durable Subscription agreement and SubscriptionStatus, ISubscriptionLifecycleService transitions, dunning grace days, renewals and cancellation reaching the gateway, SubscriptionEntitlementPart roles, ISubscriptionAccessService and ISubscriptionEntitlementApplier, ISubscriptionLifecycleHandler, subscription workflow events, selling Orchard Core sites with TenantOnboardingPart and durable provisioning jobs, and the removal of the session-based signup. Use it when requests mention selling recurring plans, memberships by subscription, tenant onboarding, subscription access, or subscription upgrade work in CrestApps commerce.
What it loads into context
Frontmatter
217 tokensAlways available to the agent
SKILL.md
3,542 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Features
- Guidelines
- Plans
- Buying a plan
- The agreement
- Member-only access
- Workflow events
- Selling sites
- Screens, reports, permissions
- Upgrading from 2.x
- Troubleshooting
Files
SKILL.mdcore15,785 bytes
Read SKILL.md
# CrestApps Orchard Core Subscriptions
Subscriptions sells recurring plans built on content items and keeps a durable **agreement** for every subscriber. It owns no payment code: a plan is bought through the shared checkout like any other purchase, and the agreement is created only from payment attempts the checkout confirmed.
Related skills: `orchardcore-checkout` (the purchase), `orchardcore-payments` (Stripe recurring billing, installment plans), `orchardcore-pay-later` (offline recurring commitments), `orchardcore-products` (plans are products), `orchardcore-memberships` (one-off role grants from an order), `orchardcore-taxation`, `orchardcore-reports`.
## Features
| Feature ID | Name | Depends on |
| --- | --- | --- |
| `CrestApps.OrchardCore.Subscriptions` | Subscriptions | `OrchardCore.Contents`, `OrchardCore.ContentTypes`, `OrchardCore.Title`, `CrestApps.OrchardCore.Users`, `CrestApps.OrchardCore.Products`, `CrestApps.OrchardCore.Checkout`, `CrestApps.OrchardCore.Receipts` |
| `CrestApps.OrchardCore.Subscriptions.Tenants` | Subscriptions - Sites (default tenant only) | Subscriptions, `OrchardCore.Tenants` |
| `CrestApps.OrchardCore.Subscriptions.Installments` | Subscriptions - Installment Plans | Transactions, Checkout, `OrchardCore.Users` (see `orchardcore-payments`) |
View the complete source on GitHuborchardcore-taxation
When your agent uses it
Skill for the CrestApps Orchard Core Taxation framework (CrestApps.OrchardCore.Taxation and the TaxJar feature CrestApps.OrchardCore.Taxation.TaxJar). Covers tax as a determination, TaxationPart, tax categories, types, jurisdictions, tables and source-aware rules (Percentage, FixedAmount, PerUnit, Progressive, Threshold and more), ThresholdBasis for import duty, reverse charge and exempt treatments, nexus with MerchantTaxRegistration, ITaxService and TaxCalculationContext, ITaxableItemProvider, ITaxClassificationProvider with taxonomy inheritance, ITaxDeterminationProvider, ITaxRuleProvider, tax-inclusive pricing, TaxSnapshot and ITaxRefundCalculator, TaxationOptions rounding, Tax origin settings, the TaxCategory, TaxType, TaxJurisdiction, TaxTable and TaxRule recipe and deployment steps, the EU VAT standard rates recipe, TaxJarOptions through IOptionsMonitor, and the VAT one-stop-shop report. Use it when requests mention Orchard Core sales tax, VAT, GST, tax rules, TaxJar or tax on orders.
What it loads into context
Frontmatter
250 tokensAlways available to the agent
SKILL.md
3,220 tokensWhen the skill is activated
Reference documents
1,215 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Where it fits in the commerce suite
- Features and assemblies
- Setting up taxes
- TaxationPart
- Calculating tax
- Key behaviors
- Extending
- TaxJar
- Recipes, deployment and reports
- Upgrading within the 3.0 line
Files
SKILL.mdcore13,825 bytesreferences/taxation-recipes.mddoc4,471 bytes
Read SKILL.md
# CrestApps Taxation
Taxation (new in CrestApps.OrchardCore 3.0) is a provider-agnostic engine built on one principle: tax is a determination, not a property. Items carry only a classification; the engine determines taxes from what is sold, who buys it, where it is sourced, when, and how it is calculated, and returns auditable tax lines with the rule and table versions used.
## Where it fits in the commerce suite
| Module | Relationship |
| --- | --- |
| Commerce (`orchardcore-commerce`) | Required shell; **Commerce > Taxation** menu |
| Checkout (`orchardcore-checkout`) | Taxes the invoice through `ICheckoutTaxService` after discounts, and keeps a `TaxSnapshot`; tax profile handlers add origin, destination and exemptions |
| Products (`orchardcore-products`) | `ProductTaxableItemProvider` turns products into taxable items |
| Orders (`orchardcore-orders`) | Copies tax lines to `Order.TaxLines`; VAT OSS report |
| Subscriptions (`orchardcore-subscriptions`) | Re-taxes each renewal with the rules in effect |
| Customers (`orchardcore-customers`) | Tax-exempt customers and business tax ids |View the complete source on GitHuborchardcore-telephony
When your agent uses it
Skill for configuring and extending the provider-agnostic CrestApps Orchard Core Telephony module and its soft phone. Covers the Telephony, Soft Phone, Soft Phone Extension and Azure Blob Storage features, provider selection, capability-gated provider contracts, TelephonyHub events, dial destination safety, incoming-call cards, call history, extension dialing, encrypted recording storage, TelephonyProviderOptions read through IOptionsMonitor, configuration sections, and upgrading from 2.x. Use this skill when requests mention CrestApps Telephony, soft phone, click-to-dial, extensions, call history, recording storage, or writing a custom telephony provider. Strong matches include CrestApps.OrchardCore.Telephony, CrestApps.OrchardCore.Telephony.Azure, ITelephonyProvider, TelephonyCapabilities, ITelephonyService, TelephonyHub, TelephonySettings, IIncomingCallContextProvider, IDialDestinationPolicy, IRecordingMediaStore, and ProviderVoiceEvent.
What it loads into context
Frontmatter
226 tokensAlways available to the agent
SKILL.md
5,033 tokensWhen the skill is activated
Reference documents
5,311 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Provider-Agnostic Telephony
- Architecture
- Site Settings
- Soft Phone
- Incoming Calls
- Call History
- Extensions
- Recording Storage
- Configuration Sections
- Permissions
- Upgrading from 2.x
- Troubleshooting
- Related Skills
Files
SKILL.mdcore21,641 bytesSKILL.mdcore21,641 bytesreferences/custom-providers.mddoc14,423 bytesreferences/extension-dialing.mddoc4,857 bytesreferences/recording-storage.mddoc5,173 bytes
Read SKILL.md
# Orchard Core Telephony - Prompt Templates
## Configure Provider-Agnostic Telephony
You are an Orchard Core expert. Generate accurate code, configuration, recipes, and administration guidance for the CrestApps Telephony module. It supplies a provider-neutral call-control layer, a SignalR hub, call history, an internal extension registry, encrypted recording storage, and an optional floating soft phone. It does not provide SMS; use Orchard Core SMS (`orchardcore-sms`) or the Omnichannel skills for text messaging.
In this module, **provider** means the telephony backend adapter (Telnyx, Asterisk, or a custom PBX or carrier integration), not the phone company in the billing sense.
### Guidelines
- Install `CrestApps.OrchardCore.Telephony` (and any provider package) in the web/startup project.
- Enable `CrestApps.OrchardCore.Telephony` for the runtime services, the hub, call history, extensions, and the **Settings → Communication → Telephony** screen. There is no separate administration feature in 3.0.
- The core feature depends on `OrchardCore.Users` and `OrchardCore.SignalR` (the Orchard Core framework SignalR module; see `orchardcore-signalr`).
- Enable `CrestApps.OrchardCore.Telephony.SoftPhone` only when the floating widget or the front-end **Soft Phone** widget is needed. Enable `CrestApps.OrchardCore.Telephony.SoftPhone.Extension` for the standalone `/softphone` page used by the browser extension and desktop app.View the complete source on GitHuborchardcore-telephony-asterisk
When your agent uses it
Skill for integrating Asterisk with the CrestApps Orchard Core Telephony soft phone through the Asterisk REST Interface (ARI). Covers the CrestApps.OrchardCore.Asterisk feature, the tenant Asterisk provider and the host-configured Default Asterisk provider, the Default and Coordination configuration sections, per-tenant Stasis application names, browser WebRTC audio through chan_pjsip with short-lived PJSIP Realtime credentials, coturn TURN, voicemail routing, the ARI event listener and reconciliation, the AsteriskSettings recipe step, and the Contact Center voice and External Media adapters. Use this skill when requests mention Asterisk, ARI, Stasis, PJSIP, SIP.js, coturn, External Media, or Default Asterisk in CrestApps Orchard Core. Strong matches include CrestApps.OrchardCore.Asterisk, AsteriskSettings, DefaultAsteriskOptions, AsteriskCoordinationOptions, AsteriskTelephonyProvider, AsteriskContactCenterVoiceProvider, AsteriskContactCenterVoiceMediaProvider, and AsteriskConstants.
What it loads into context
Frontmatter
246 tokensAlways available to the agent
SKILL.md
3,623 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Connect Asterisk to the Soft Phone
- Two Providers
- Capabilities
- Tenant Settings
- Default Asterisk from Configuration
- Browser WebRTC Audio
- Call Control and Real-Time State
- Voicemail Routing
- Contact Center Adapters
- Development Hosts
- Upgrading from 2.x
- Troubleshooting
Files
SKILL.mdcore15,371 bytesSKILL.mdcore15,371 bytes
Read SKILL.md
# Orchard Core Telephony Asterisk - Prompt Templates
## Connect Asterisk to the Soft Phone
You are an Orchard Core expert. Generate accurate configuration, recipes, and troubleshooting guidance for the CrestApps Asterisk provider. It controls calls server-side through ARI over HTTP basic authentication, so ARI credentials never reach the browser. The provider-neutral soft phone, hub, and provider contracts are covered by `orchardcore-telephony`.
### Guidelines
- Install `CrestApps.OrchardCore.Asterisk` in the web/startup project and enable `CrestApps.OrchardCore.Asterisk`. It depends on `CrestApps.OrchardCore.Telephony`, which enables the settings screen.
- There is only one selectable feature. The Contact Center voice adapter activates automatically when `CrestApps.OrchardCore.ContactCenter.Voice` is also enabled, and the media adapter when `CrestApps.OrchardCore.ContactCenter.Voice.Media` is enabled. Install the Contact Center package in the startup project for those.
- Always set a **Stasis application name**; a blank value fails closed. Give each tenant sharing one Asterisk server a unique application name.
- Keep ARI and PJSIP Realtime credentials in tenant settings (encrypted) or a secret store, never in committed `appsettings.json`.
- Run real-time Asterisk voice on a single active application node; the ARI application claim is node-local.
- All recipe JSON must be wrapped in `{ "steps": [...] }`.View the complete source on GitHuborchardcore-telephony-telnyx
When your agent uses it
Skill for integrating Telnyx with CrestApps Orchard Core as a browser WebRTC telephony provider, Contact Center voice provider, SMS provider, and AI voice agent. Covers the CrestApps.OrchardCore.Telnyx, CrestApps.OrchardCore.Telnyx.Sms and CrestApps.OrchardCore.Telnyx.AiVoice features, the API key and Connect Telnyx provisioning, TelnyxOptions read through IOptionsMonitor, Ed25519-signed call and messaging webhooks, the telnyx-webrtc adapter and bridged keypad dialing, STUN and TURN, noise suppression, recording ingest, the media stream WebSocket, the TelnyxSettings and TelnyxSmsSettings recipe steps, and the OrchardCore_Sms_Telnyx section. Use this skill when requests mention Telnyx, Telnyx Call Control, Telnyx WebRTC, Telnyx SMS, Telnyx webhooks, or a Telnyx AI phone agent in CrestApps Orchard Core. Strong matches include TelnyxConstants, TelnyxSettings, TelnyxOptions, TelnyxSmsOptions, TelnyxTelephonyProvider, TelnyxContactCenterVoiceProvider, TelnyxSmsProvider, and VoiceOmnichannelProcessor.
What it loads into context
Frontmatter
299 tokensAlways available to the agent
SKILL.md
3,934 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Connect Telnyx
- Connect Telnyx and Settings
- Webhooks
- Browser WebRTC Soft Phone
- Contact Center Adapter (Provider Side)
- Telnyx AI Voice Agent
- Telnyx SMS
- Upgrading from 2.x
- Troubleshooting
Files
SKILL.mdcore15,368 bytesSKILL.mdcore15,368 bytes
Read SKILL.md
# Orchard Core Telephony Telnyx - Prompt Templates
## Connect Telnyx
You are an Orchard Core expert. Generate accurate configuration, recipes, and troubleshooting guidance for the CrestApps Telnyx module. Telnyx exposes a SIP-over-WebSocket registrar and a server-side Call Control API, so the browser soft phone carries the call audio itself (WebRTC) and the Contact Center can bridge live calls to agents server-side (`ServerSideAcd`). The provider-neutral soft phone, hub, and contracts are covered by `orchardcore-telephony`.
### Guidelines
- Install `CrestApps.OrchardCore.Telnyx` in the web/startup project.
- Enable `CrestApps.OrchardCore.Telnyx`; it enables `CrestApps.OrchardCore.Telephony` and `CrestApps.OrchardCore.WebSockets` (see `orchardcore-websockets`).
- Telnyx voice has no configuration section; configure it on the **Telnyx** tab of **Settings → Communication → Telephony** with `ManageTelephonySettings`.
- Create the API key as a Telnyx account Owner or Admin. A restricted member's key fails **Connect Telnyx** with `Not authorized` (Telnyx code 10006).
- Paste the Telnyx account Ed25519 **public key** into **Webhook public key**; webhooks are rejected until it is set.
- Present Telnyx-owned caller ids so calls earn STIR/SHAKEN attestation.View the complete source on GitHuborchardcore-tenant-hierarchy
When your agent uses it
Skill for the CrestApps Orchard Core Tenant Hierarchy module, where the Default tenant makes tenants parents that create, manage and open their own child tenants. Covers the Platform, Parent and Child features, the AddTenantHierarchy host guards in Program.cs, the TenantHierarchy configuration section, parent policies, delegated access with a one-time code and PKCE, linked users, access grants, the tenant switcher, isolation guards such as GuardedShellHost and the egress guard, audit trail activity, database strategies and custom IChildTenantDatabaseProvisioner implementations. Use this skill when requests mention Orchard Core tenant hierarchy, parent and child tenants, agency multi-tenancy, entering a child tenant without signing in, or a database per tenant. Strong matches include CrestApps.OrchardCore.TenantHierarchy, ITenantHierarchyBroker, TenantHierarchyAccessDeniedException, ParentTenantPolicy, ChildDatabaseStrategy, DatabasePoolOptions, ManageTenantHierarchy and EnterChildTenants.
What it loads into context
Frontmatter
226 tokensAlways available to the agent
SKILL.md
2,982 tokensWhen the skill is activated
Reference documents
2,217 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Parent Tenants with Their Own Child Tenants
- Configuration
- How It Works
- Feature Guard
- Permissions
- Custom Database Provisioner
- Deployment Checklist
- Troubleshooting
Files
SKILL.mdcore13,168 bytesreferences/tenant-hierarchy-reference.mddoc9,844 bytes
Read SKILL.md
# Orchard Core Tenant Hierarchy - Prompt Templates
## Parent Tenants with Their Own Child Tenants
You are an Orchard Core expert. Generate accurate setup, configuration, extension and troubleshooting guidance for the CrestApps Tenant Hierarchy module. A tenant the platform marks as a **parent** creates, manages and opens its own **child** tenants (for example a bookkeeping firm with one site per client business). The Default tenant stays the platform root and still manages every tenant through Orchard Core's Tenants admin.
### Guidelines
- Install `CrestApps.OrchardCore.TenantHierarchy` (or the `CrestApps.OrchardCore.Cms.Core.Targets` bundle) in the web/startup project.
- Call `AddTenantHierarchy()` on the Orchard Core builder in `Program.cs`, after Orchard Core is added. Without it the platform refuses to make parents and a parent refuses to create children.
- Configuration is host configuration in the `TenantHierarchy` section of the application configuration. Tenant configuration cannot change it.
- Give every tenant its own host name, never a URL prefix, and serve every tenant over HTTPS so the `__Host-` cookies work.
- Code in one tenant of a hierarchy must reach another only through `ITenantHierarchyBroker`. Direct `IShellHost` calls across tenants throw `TenantHierarchyAccessDeniedException`, and HTTP calls between tenants are refused by the egress guard.
- The guards do not stop malicious server code: all tenants share one process, so install only trusted modules.View the complete source on GitHuborchardcore-time-zones
When your agent uses it
Skill for managing friendly named IANA time-zone maps with the CrestApps Time Zones module in Orchard Core. Covers the Tools > Time Zones admin list, the ManageTimeZoneMaps permission, unique names and time zone ids validated against the tz database, the mapped ITimeZoneSelectListProvider that limits the site Default Time Zone and user time zone menus, the TimeZoneMaps recipe step and its schema, deployment export, and seeded starter maps. Use this skill when requests mention Orchard Core time zones, friendly time-zone labels, time-zone maps, a missing time zone in a selector, TimeZoneMaps recipes, or time-zone deployment. Strong matches include CrestApps.OrchardCore.TimeZones, TimeZoneMap, ITimeZoneSelectListProvider, MappedTimeZoneSelectListProvider, TimeZoneMapHandler, TimeZoneMapStep, TimeZoneMapDeploymentStep and TimeZonesConstants.
What it loads into context
Frontmatter
212 tokensAlways available to the agent
SKILL.md
2,310 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Friendly Time-Zone Maps
- How Maps Work
- Admin Management
- Consume the Mapped Selector
- Import Maps with Recipes
- Export Maps with Deployment
- Choosing Correct IDs
- Customization Pattern
- Upgrading from 2.x
- Troubleshooting
Files
SKILL.mdcore10,109 bytesSKILL.mdcore10,109 bytesSKILL.mdcore10,109 bytes
Read SKILL.md
# CrestApps Time Zones
## Configure Friendly Time-Zone Maps
You are an Orchard Core expert. Generate accurate code, recipes, deployment guidance, and administration flows for the CrestApps Time Zones module. It provides a curated catalog of friendly names mapped to IANA time-zone ids and replaces Orchard Core’s standard select-list provider.
### Guidelines
- Install `CrestApps.OrchardCore.TimeZones` in the web/startup project.
- Enable `CrestApps.OrchardCore.TimeZones`; it depends on `OrchardCore.Recipes.Core`.
- Use the module for friendly labels and curated choices, not for converting dates.
- Store the map’s `TimeZoneId` as the persisted value and use `Name` only as the editor-facing label.
- Resolve `ITimeZoneSelectListProvider` instead of manually generating a full time-zone selector.
- Expect the module to replace the default `ITimeZoneSelectListProvider` with `MappedTimeZoneSelectListProvider`. Once enabled, every menu built from it (including the site **Default Time Zone** and the **User Time Zone** profile setting, and the Omnichannel contact and activity screens) offers only mapped zones.View the complete source on GitHuborchardcore-transactions
When your agent uses it
Skill for the CrestApps Orchard Core Transactions module (CrestApps.OrchardCore.Transactions, CrestApps.OrchardCore.Transactions.Notification, CrestApps.OrchardCore.Transactions.Receipts), the provider-agnostic ledger of money owed. Covers the Transaction model and TransactionStatus, guest owners, ITransactionManager, AddTransactionSource, online settlement through the checkout, ITransactionCommandService (record payment, mark paid, cancel, AdjustAsync, SendInvoiceAsync, RefundAsync), ITransactionPaymentHandler, IPaymentRefundHandler, ITransactionEventHandler, invoice numbers and pay links, reminders and TransactionReminderSettings, payment receipts, customer pages in the site theme with ITransactionCustomerPageService, the PaymentAttempt and PaymentRefund ledgers, the Payments and Refunds screens and permissions. Use it when requests mention outstanding balances, My Transactions, recording a payment, adjustments or waivers, invoices, pay links, payment reminders or refunds in CrestApps commerce.
What it loads into context
Frontmatter
229 tokensAlways available to the agent
SKILL.md
3,788 tokensWhen the skill is activated
Reference documents
615 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Features
- Guidelines
- The model
- Settlement
- Transaction commands
- Reacting to changes
- Invoices, pay links and reminders
- Customer pages in the site theme
- Admin screens and permissions
- Upgrading from 2.x
- Troubleshooting
Files
SKILL.mdcore17,413 bytesSKILL.mdcore17,413 bytesreferences/customer-pages.mddoc2,944 bytes
Read SKILL.md
# CrestApps Orchard Core Transactions
Transactions answers one question for the tenant: what has not been paid yet? A `Transaction` is a durable record of one obligation, whatever created it (Pay Later, bank transfer, installment plans, company terms, your module). The module also owns the payment ledgers (`PaymentAttempt`, `PaymentRefund`) the checkout writes, and the **Commerce > Payments** and **Commerce > Refunds** screens.
Related skills: `orchardcore-checkout` (online settlement, coupons on balances), `orchardcore-payments` (refund service, installment plans), `orchardcore-pay-later`, `orchardcore-receipts`, `orchardcore-customers` (owner and guest contact, notifier), `orchardcore-companies`.
## Features
| Feature ID | Name | Depends on | Adds |
| --- | --- | --- | --- |
| `CrestApps.OrchardCore.Transactions` | Transactions | Commerce, `CrestApps.OrchardCore.Users` | Ledger, **Commerce > Transactions**, **My Transactions**, pay links, commands, Payments and Refunds screens (with Checkout) |
| `CrestApps.OrchardCore.Transactions.Notification` | Transaction Reminders | Transactions, `OrchardCore.Notifications` | Reminders, invoices sent with pay links, `TransactionReminderBackgroundTask` (every 6 hours) |
| `CrestApps.OrchardCore.Transactions.Receipts` | Send Payment Receipts | Transactions, Receipts, `OrchardCore.Notifications` | A numbered receipt after every payment and a notice after every refund |
View the complete source on GitHuborchardcore-websockets
When your agent uses it
Skill for the CrestApps Orchard Core WebSockets infrastructure module. Covers the dependency-only CrestApps.OrchardCore.WebSockets feature that adds the ASP.NET Core WebSocket middleware to the tenant pipeline, the CrestApps WebSockets configuration section bound to WebSocketOptions (KeepAliveInterval, KeepAliveTimeout, AllowedOrigins), hosting raw WebSocket endpoints, the IWebSocketConnectionRegistry and WebSocketRendezvous contracts for provider callbacks that dial back, in-memory and Redis-backed registries, and host affinity across nodes. Use this skill when requests mention raw WebSockets in Orchard Core, refused WebSocket upgrades, UseWebSockets per tenant, provider media streams that connect back such as Telnyx, WebSocket keep-alive or allowed origins, or callbacks landing on the wrong node. Strong matches include CrestApps.OrchardCore.WebSockets, WebSocketsConstants, IWebSocketConnectionRegistry, WebSocketRendezvous, DistributedWebSocketConnectionRegistry, and WebSocketOptions.
What it loads into context
Frontmatter
228 tokensAlways available to the agent
SKILL.md
1,908 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Host Raw WebSocket Endpoints
- Depend on the Feature
- Configure the Middleware
- Correlate a Provider Callback
- Multi-Node Deployments
- Common Failures
- Related Skills
Files
SKILL.mdcore8,506 bytesSKILL.mdcore8,506 bytesSKILL.mdcore8,506 bytesSKILL.mdcore8,506 bytesSKILL.mdcore8,506 bytesSKILL.mdcore8,506 bytesSKILL.mdcore8,506 bytesSKILL.mdcore8,506 bytes
Read SKILL.md
# Orchard Core WebSockets - Prompt Templates
## Host Raw WebSocket Endpoints
You are an Orchard Core expert. Generate accurate code and configuration for features that accept raw WebSocket upgrades (`HttpContext.WebSockets.AcceptWebSocketAsync()`) in a CrestApps Orchard Core tenant.
### Guidelines
- The Orchard Core host does not run `app.UseWebSockets()`. Without it a raw upgrade is refused. SignalR does not need it (see `orchardcore-signalr`).
- `CrestApps.OrchardCore.WebSockets` is the single place the middleware is added. It is `EnabledByDependencyOnly`, so it never shows as a toggle; declare it as a dependency of your feature instead of enabling it in a recipe.
- Depend on the contracts in `CrestApps.OrchardCore.WebSockets.Abstractions` (`IWebSocketConnectionRegistry`, `WebSocketRendezvous`), not on the module's host wiring.
- Use unguessable, single-use keys for every rendezvous, and remove the key when the starter times out.
- A live socket cannot move between nodes. Route provider callbacks back to the node that started them.
- Install third-party module packages in the web/startup project.View the complete source on GitHuborchardcore-wizard
When your agent uses it
Skill for the CrestApps Orchard Core Wizard module, a reusable multi-step wizard or stepper framework. Covers content-driven wizards with the WizardPart and its settings (allowed step types or stereotypes, completion policy, sign-in), code-driven wizards with IWizardDefinition, WizardHandlerBase and IDisplayDriver of WizardFlow, WizardSession SavedSteps, the public Start, Step and Confirmation routes, idempotent completion under a lock with IWizardEngine.CompleteAsync and prepareUnderLock, IWizardAccessPolicy, the StartWizard and ContinueWizard permissions, and the wizard workflow events. Use this skill when requests mention Orchard Core wizards, steppers, multi-step forms, onboarding flows, guided sign-up, or surveys. Strong matches include CrestApps.OrchardCore.Wizard, WizardPart, WizardFlow, WizardSession, WizardStep, IWizardEngine, IWizardSessionStore, WizardCompletionResult and WizardCompletedEvent.
What it loads into context
Frontmatter
220 tokensAlways available to the agent
SKILL.md
2,527 tokensWhen the skill is activated
Reference documents
1,429 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Build Multi-Step Wizards
- Content-Driven Wizards
- Code-Driven Wizards
- Completing Under a Lock
- Access Control
- Workflow Events
- Troubleshooting
Files
SKILL.mdcore10,958 bytesreferences/code-wizard-examples.mddoc6,721 bytes
Read SKILL.md
# Orchard Core Wizard - Prompt Templates
## Build Multi-Step Wizards
You are an Orchard Core expert. Generate accurate setup and extension guidance for the CrestApps Wizard module, a decoupled multi-step wizard engine for sign-up, onboarding, surveys or any guided flow. A wizard is built from content items (no code) or from code; both share one engine, session store, public host controller, completion lock and workflow events.
### Guidelines
- Install `CrestApps.OrchardCore.Wizard` (or the `CrestApps.OrchardCore.Cms.Core.Targets` bundle) in the web/startup project. Reference `CrestApps.OrchardCore.Wizard.Abstractions` from a module that only implements wizard contracts.
- Enable `CrestApps.OrchardCore.Wizard`. It is the only feature ID. The content-driven part activates when `OrchardCore.Contents` is enabled, and the workflow events activate when `OrchardCore.Workflows` is enabled (both through `[RequireFeatures]` startups).
- In a handler or driver, always early-return for wizard types and steps you do not own. Every registered handler and driver runs for every wizard.
- Add steps in `ActivatingAsync`, which runs once per new session, so resuming does not add steps again.
- A `CollectData` step is complete only when `WizardSession.SavedSteps` has an entry for its key.
- Put finalization side effects (provisioning, emails) in `CompletedAsync`. The engine runs completing and completed handlers exactly once.View the complete source on GitHuborchardcore-admin
When your agent uses it
Guidance for the Orchard Core admin panel, including admin controllers and routes, admin menu registration with AdminNavigationProvider, admin views with breadcrumbs and ocat editor forms, TheAdmin theme customization and menu colors, admin branding, the Navbar shape, the Ctrl+K quick navigation palette with QuickNavigationSource and IQuickNavigationIndex, AdminSettings such as MenuBehavior, ShowBreadcrumb, DisplayQuickNavigation and list layouts, the AdminDashboard shape, settings pages, and admin filters and zones. Use this skill when requests mention Orchard Core Admin Panel, TheAdmin Theme, Admin Controllers, Admin Menu Registration, Adding an Icon to an Admin Menu Item, AdminSettings recipe step, Quick Navigation, Navigation menu behavior, admin URL prefix, or related implementation, upgrade, or troubleshooting work. Strong matches include OrchardCore.Admin, AdminSettings, AdminPermissions, AdminOptions, AdminAttribute, SiteDisplayDriver, OrchardCore.Contents.QuickNavigation.
What it loads into context
Frontmatter
216 tokensAlways available to the agent
SKILL.md
5,743 tokensWhen the skill is activated
Reference documents
3,477 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- TheAdmin Theme
- Admin Controllers
- Admin Views
- Admin Menu Registration
- Quick Navigation (Ctrl+K)
- Navbar Shape
- Admin Branding
- Admin Home Page Content
- Admin Settings Pages
- Admin Settings Reference
- Admin Filters
- Upgrading from 3.x
Files
SKILL.mdcore25,407 bytesSKILL.mdcore25,407 bytesreferences/admin-examples.mddoc17,554 bytes
Read SKILL.md
# Orchard Core Admin Panel
The Orchard Core admin panel is the back-office interface for content management and site configuration. It is rendered by the **TheAdmin** theme for every request routed through the admin pipeline (`[Admin]` attribute). Related skills cover the details of specific admin areas:
- `orchardcore-admin-edit-views` for editor views and forms built with the `ocat-*` classes.
- `orchardcore-admin-lists` for admin index (list) pages rendered with the `AdminList` shape.
- `orchardcore-breadcrumbs` for the `<breadcrumb>` page title trail.
- `orchardcore-admin-menu` for the admin-configurable `OrchardCore.AdminMenu` node tree.
- `orchardcore-admin-dashboard` for `DashboardWidget` content.
## TheAdmin Theme
### Layout Zones
View the complete source on GitHuborchardcore-admin-dashboard
When your agent uses it
Skill for creating admin dashboard widgets in Orchard Core. Covers the DashboardWidget stereotype, DashboardPart position and sizing, the built-in HtmlDashboardWidget, ContentsMetadata and ContentsTags widget types, custom widget content types via recipe or migration, arranging widgets in Manage Dashboard mode, widget template customization, provisioning widgets with recipes, dashboard permissions, the DashboardBreadcrumbProvider Dashboard ancestor, and the AdminDashboardContent shape used when the feature is disabled. Use this skill when requests mention Orchard Core Admin Dashboard, Create and Configure Dashboard Widgets, Enabling Admin Dashboard, Widget Configuration Properties, dashboard widget recipes, Dashboard breadcrumb, or related implementation, setup, or troubleshooting work. Strong matches include OrchardCore.AdminDashboard, DashboardPart, DashboardBreadcrumbProvider, AccessAdminDashboard, ManageAdminDashboard.
What it loads into context
Frontmatter
185 tokensAlways available to the agent
SKILL.md
2,464 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Create and Configure Dashboard Widgets
Files
SKILL.mdcore11,526 bytesSKILL.mdcore11,526 bytesSKILL.mdcore11,526 bytes
Read SKILL.md
# Orchard Core Admin Dashboard - Prompt Templates
## Create and Configure Dashboard Widgets
You are an Orchard Core expert. Generate admin dashboard widgets, content types, and template configurations for Orchard Core.
### Guidelines
- Enable `OrchardCore.AdminDashboard` for admin dashboard widget support. It replaces the default `/admin` landing page with the widget dashboard.
- Dashboard widgets are content items with the `DashboardWidget` stereotype, so they can be edited, secured, versioned, and localized like any other content.
- Built-in widget types: `HtmlDashboardWidget` (an `HtmlBodyPart` body for links or notes), `ContentsMetadata`, and `ContentsTags`. The module also ships a `dashboard-widgets-samples` recipe.
- To create a widget content type, set its stereotype to `DashboardWidget`.
- `DashboardPart` is added automatically to every `DashboardWidget` type and stores `Position`, `Width`, and `Height`.
- `Position`, `Width`, and `Height` are `double` values (defaults `0`, `1.0`, `1.0`). The grid has 6 columns on large screens (3 on tablets, 1 on phones), so a `Width` of `1` is one sixth and `6` is the full width; use whole numbers from 1 to 6 for `Width` and `Height`.View the complete source on GitHuborchardcore-admin-edit-views
When your agent uses it
Skill for writing Orchard Core admin editor views with the ocat CSS classes. Covers Edit views for content parts and fields, field editor variants, part and field settings editors, site settings editors, workflow activity and deployment step Fields.Edit views, and full admin edit pages, plus the ocat-wrapper, ocat-label, ocat-label-required, ocat-end, ocat-end-offset, ocat-start, ocat-limited-wrapper and ocat-limited classes and their layout rules, content-part-wrapper and field-wrapper classes, asp-validation-class-for and validation messages, hints and the Hint_Admin shape, editor tabs, cards and columns, and horizontal admin form layouts. Use this skill when requests mention Orchard Core admin edit views, admin forms, Edit.cshtml, Fields.Edit.cshtml, Settings.Edit.cshtml, ocat classes, replacing mb-3 or form-group in admin views, or field hints. Strong matches include TheAdmin, ocat-wrapper, Hint_Admin, ContentPartDisplayDriver, ContentTypePartDefinitionDisplayDriver, SiteDisplayDriver.
What it loads into context
Frontmatter
246 tokensAlways available to the agent
SKILL.md
5,399 tokensWhen the skill is activated
Reference documents
3,143 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Which Views This Covers
- The `ocat-*` Classes
- Row Templates
- Validation
- Hints
- Content Part and Field Wrapper Classes
- Editor Groupings (Tabs, Cards, Columns)
- Full Admin Edit Pages
- Restyling Admin Forms
- Migrating Legacy Views
- Related Skills
Files
SKILL.mdcore21,377 bytesSKILL.mdcore21,377 bytesreferences/admin-edit-views-examples.mddoc13,893 bytes
Read SKILL.md
# Orchard Core Admin Edit Views
Every admin view that edits something (a content part or field, a settings group, a workflow activity, a deployment step, or a module's own entity) lays out its rows with the static `ocat-` (Orchard Core Admin Theme) CSS classes. TheAdmin styles them as a stacked Bootstrap form; a custom admin theme can restyle every editor (for example as a horizontal form) by overriding the classes, without touching any view.
- Use `ocat-*` only in admin views. **Never** in front-end views (Login, Register, ForgotPassword, or anything rendered by the site theme).
- Do not use Bootstrap-only row markup (`mb-3`, `form-group`, `form-label`) for admin field rows, and do not use the `@Orchard.GetWrapperClasses()`-style helpers (removed in Orchard Core 3.0).
- Admin pages that list items are not edit views; they render `<admin-list>` (see `orchardcore-admin-lists`).
## Which Views This Covers
| Editor | Produced by | View file |
|---|---|---|
| Content part editor | `ContentPartDisplayDriver<TPart>.Edit` with `GetEditorShapeType(context)` | `Views/{Part}.Edit.cshtml` |
| Content field editor | `ContentFieldDisplayDriver<TField>.Edit` with `GetEditorShapeType(context)` | `Views/{Field}.Edit.cshtml` |View the complete source on GitHuborchardcore-admin-lists
When your agent uses it
Skill for Orchard Core 4.0 admin index views (list pages) rendered with the AdminList shape. Covers the List and Grid layouts, AdminListContext of TModel, the admin-list and admin-list-column tag helpers, column width and alignment, row display drivers placing shapes for SummaryAdmin and SummaryAdminGrid, row templates and zones, AdminListActions Buttons and Menu layouts, AdminListToolbar, AdminListSearch, the list-management script for select-all and bulk actions, IAdminListColumnsProvider, AdminListOptions, user layout selection, per-list alternates, sortable lists, and upgrading overridden list views. Use this skill when requests mention Orchard Core admin index views, an admin index page, admin lists, converting a hand-written admin listing, grid layout, list columns, row actions menu, or adding a column to the content items list. Strong matches include OrchardCore.Admin.Abstractions, AdminListContext, AdminListColumn, IAdminListColumnsProvider, AdminListOptions, AdminListLayout, ContentsAdminList.
What it loads into context
Frontmatter
242 tokensAlways available to the agent
SKILL.md
5,780 tokensWhen the skill is activated
Reference documents
3,262 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Layouts
- Ownership
- When to Use
- Building a List Page
- Tag Helper Reference
- `AdminListContext` Properties
- Row Templates and Placement
- Extending Another Module's Columns
- Configuration and Settings
- Alternates
- Sortable Lists
- Gotchas
- Checking a List
- Upgrading from 3.x
- Related Skills
Files
SKILL.mdcore24,315 bytesreferences/admin-lists-examples.mddoc14,902 bytes
Read SKILL.md
# Orchard Core Admin Lists
Every Orchard Core 4.0 admin page that lists items (content items, users, features, queries, workflows, layers, ...) renders them through the shared `AdminList` shape from `OrchardCore.Admin`. The shape renders the search bar, page actions, toolbar (item count, select-all, bulk actions), rows, empty message, pager, and page size selector in the layout the site (or the user) picks. Never hand-write a `<ul class="list-group">`, `<table>`, toolbar, or pager for an admin listing.
## Layouts
| Enum | Values | Description |
|---|---|---|
| `AdminListLayout` | `List` (default), `Grid` | `List` renders each item's `SummaryAdmin` shape as a whole row. `Grid` renders the item's `SummaryAdminGrid` shape, one cell per declared `AdminListColumn`, on a CSS grid whose header always lines up; below 48rem of list width (container query) it stacks like a `List` row instead of scrolling. |
| `AdminListActionsLayout` | `Buttons` (default), `Menu` | `Buttons` renders the `Actions` zone as buttons plus an "Actions" dropdown for `ActionsMenu`. `Menu` renders everything in one ellipsis dropdown. |
Exactly these values exist; templates can restyle them but cannot register more layouts.
## OwnershipView the complete source on GitHuborchardcore-admin-menu
When your agent uses it
Skill for creating admin menus in Orchard Core. Covers admin menu content, the link, placeholder, content types, and lists admin node types, the AdminMenu recipe and deployment step, ManageAdminMenu, ViewAdminMenuAll and per-menu ViewAdminMenu permissions from AdminMenuPermissions, custom admin nodes with AdminNode, IAdminNodeNavigationBuilder and AddAdminNode, data localization of node text, rendering in the 4.0 TheAdmin menu, and upgrading from the removed legacy admin menu layout. Use this skill when requests mention Orchard Core Admin Menu, Create and Manage Admin Menus, Admin Menu Deployment Recipe Step, Built-In Admin Node Types, Custom Admin Node Class, LegacyAdminMenuNavigation, or related implementation, setup, or troubleshooting work. Strong matches include OrchardCore.AdminMenu, OrchardCore.AdminMenu.Abstractions, AdminMenuPermissions, LinkAdminNode, PlaceholderAdminNode, OrchardCore.Lists, OrchardCore.Navigation.
What it loads into context
Frontmatter
221 tokensAlways available to the agent
SKILL.md
3,082 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Create and Manage Admin Menus
Files
SKILL.mdcore14,233 bytesSKILL.mdcore14,233 bytesSKILL.mdcore14,233 bytesSKILL.mdcore14,233 bytesSKILL.mdcore14,233 bytesSKILL.mdcore14,233 bytesSKILL.mdcore14,233 bytesSKILL.mdcore14,233 bytesSKILL.mdcore14,233 bytesSKILL.mdcore14,233 bytesSKILL.mdcore14,233 bytesSKILL.mdcore14,233 bytesSKILL.mdcore14,233 bytesSKILL.mdcore14,233 bytesSKILL.mdcore14,233 bytesSKILL.mdcore14,233 bytes
Read SKILL.md
# Orchard Core Admin Menu - Prompt Templates
## Create and Manage Admin Menus
You are an Orchard Core expert. Generate admin menus, custom admin node types, and admin menu configurations for Orchard Core.
### Guidelines
- Enable `OrchardCore.AdminMenu` for custom admin menu support. Admin menus are managed under **Tools → Admin Menus** (the `AdminMenus` admin list).
- An **Admin Menu** is a tree of **Admin Nodes** merged into the standard TheAdmin menu. First-level nodes that hold children render as menu groups.
- Admin Nodes are nested via drag-and-drop in the admin UI.
- Built-in node types: **Link Admin Node**, **Placeholder Admin Node**, **Content Types Admin Node**, and **Lists Admin Node**.
- A disabled menu is not shown; a disabled node hides itself and all descendants.
- Use deployment plans to export admin menus as `AdminMenu` recipe steps.View the complete source on GitHuborchardcore-alias
When your agent uses it
Skill for assigning stable logical aliases to Orchard Core content items. Covers AliasPart configuration, generated and editable aliases, uniqueness and clone rules, AliasPartIndex lookups, alias cache invalidation, content handles, Liquid accessors, Razor helpers, GraphQL filters, and alias shape alternates. Use this skill when requests mention Orchard Core Alias, AliasPart, custom content aliases, logical content identifiers, alias patterns, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.Alias, AliasPart, AliasPartSettings, AliasPartHandler, AliasPartIndex, AliasPartContentHandleProvider, IContentHandleProvider, and IOrchardHelper. It also helps with alias migrations, content-definition recipes, indexed lookups, and the code patterns captured in this skill.
What it loads into context
Frontmatter
198 tokensAlways available to the agent
SKILL.md
2,633 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Assign Stable Content Aliases
Files
SKILL.mdcore11,956 bytes
Read SKILL.md
# Orchard Core Alias - Prompt Templates
## Assign Stable Content Aliases
You are an Orchard Core expert. Generate code and configuration for `AliasPart`, which assigns a custom logical identifier to a content item without changing its public route.
### Guidelines
- Enable the `OrchardCore.Alias` feature. Its module dependency is `OrchardCore.ContentTypes`.
- Attach `AliasPart` to a type before assigning aliases. It is an attachable part rather than a route provider.
- `AliasPart.Alias` is indexed case-insensitively in `AliasPartIndex`; aliases are limited to `AliasPart.MaxAliasLength` which is 735 characters.
- The default `AliasPartSettings.Pattern` is `{{ Model.ContentItem.DisplayText | slugify }}`.
- Use `AliasPartOptions.Editable` to allow editors to change the generated alias, or `GeneratedDisabled` to hide editing and generate it from the pattern.
- Alias generation runs when a newly created or updated part has no alias. The handler appends `-1`, `-2`, and so on to make duplicate generated aliases unique (trimming the base to stay within the length limit). Cloning an item also generates a suffixed alias for the clone.View the complete source on GitHuborchardcore-amazon-s3-media
When your agent uses it
Skill for configuring Amazon S3 media storage in Orchard Core. Covers the OrchardCore.Media.AmazonS3 and OrchardCore.Media.AmazonS3.ImageCache features, the OrchardCore Media AmazonS3 and Media AmazonS3 ImageCache configuration sections, environment variable names, bucket setup, AWS credentials and their loading order, bucket policies, tenant templating with ShellSettings, local S3 emulators with ServiceURL and ForcePathStyle, the Media Cache, resized image caching in S3, TUS resumable upload staging with S3 multipart uploads, and CDN use. Use this skill for Amazon S3 Media Storage, AwsStorageOptions, AwsMediaImageCacheOptions, BucketName, BasePath, CreateBucket, RemoveBucket, AWSS3ResizedImageCache, S3TusTempStore, upgrading from OrchardCore_Media_AmazonS3 or OrchardCore.Media.AmazonS3.ImageSharpImageCache, or related implementation, setup, extension, and troubleshooting work.
What it loads into context
Frontmatter
232 tokensAlways available to the agent
SKILL.md
2,298 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Module Overview
- Amazon S3 Media Storage (`OrchardCore:Media:AmazonS3`)
- AWS Credentials Loading Order
- Bucket Access
- Tenant Templating
- Local S3 Emulator
- Media Cache
- Amazon S3 Image Cache (`OrchardCore:Media:AmazonS3:ImageCache`)
- Resumable Uploads
- Upgrading from 3.x
Files
SKILL.mdcore8,646 bytesSKILL.mdcore8,646 bytes
Read SKILL.md
# Orchard Core Amazon S3 Media Storage
## Module Overview
The `OrchardCore.Media.AmazonS3` module stores media in S3 buckets instead of
`App_Data`:
- **`OrchardCore.Media.AmazonS3`** — replaces the media store with S3. Depends on (and enables) `OrchardCore.Media.Cache`.
- **`OrchardCore.Media.AmazonS3.ImageCache`** — stores resized images in S3 instead of `wwwroot/{tenant}/media-cache`.
Media is still served by the Orchard Core site: the Media Cache fetches objects
on demand, which keeps on-the-fly resizing working. Only one storage provider
is active at a time. Invalid configuration logs an error and falls back to local
file storage.View the complete source on GitHuborchardcore-antivirus
When your agent uses it
Skill for scanning uploaded files for malware in Orchard Core 4.0 with the OrchardCore.Antivirus module. Covers the OrchardCore.Antivirus.ClamAV feature (ClamAV Antivirus Scanner), the OrchardCore Antivirus ClamAV configuration section with Host, Port, ConnectTimeoutSeconds and TransferTimeoutSeconds, environment variables, running clamd with Docker, fail-closed behavior, AntivirusScanningException, connection reuse, buffering of non-seekable streams, which uploads are scanned, and clamd StreamMaxLength sizing. Use this skill when requests mention Orchard Core antivirus, ClamAV, clamd, malware scanning, virus scanning of uploads, or closely related Orchard Core setup or troubleshooting work. Strong matches include OrchardCore.Antivirus, OrchardCore.Antivirus.ClamAV, ClamAvOptions, AntivirusScanningException, and clamav/clamav Docker images.
What it loads into context
Frontmatter
210 tokensAlways available to the agent
SKILL.md
1,586 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Scan Uploads with ClamAV
Files
SKILL.mdcore6,610 bytesSKILL.mdcore6,610 bytes
Read SKILL.md
# Orchard Core Antivirus - Prompt Templates
## Scan Uploads with ClamAV
You are an Orchard Core expert. Generate configuration and deployment guidance for scanning uploaded files with ClamAV before Orchard Core stores them.
### Guidelines
- `OrchardCore.Antivirus.ClamAV` (**ClamAV Antivirus Scanner**, Security category) registers a ClamAV `IFileEventHandler` in the shared file upload security pipeline. The pipeline itself (`FileCreationService`, custom upload code, custom handlers) is covered by `orchardcore-file-upload-security`.
- The module ships with Orchard Core 4.0 and is part of `OrchardCore.Application.Cms.Core.Targets`. Only an app that references individual modules needs `<PackageReference Include="OrchardCore.Antivirus" Version="4.*" />` in the web project.
- It fails closed: a malware detection rejects the upload, and a missing `Host`, invalid settings, connection failure, timeout, or unexpected `clamd` response also rejects it.
- Only uploads that go through the pipeline are scanned; see the coverage list below.
- All recipe JSON must be wrapped in the root `{ "steps": [...] }` format.
View the complete source on GitHuborchardcore-archive-later
When your agent uses it
Skill for scheduling published Orchard Core content to be automatically unpublished (archived) at a future date. Covers ArchiveLaterPart, scheduled UTC dates, ArchiveLaterPartIndex, editor behavior, admin list (List and Grid layout) display, and the Content Items Archiver ScheduledArchivingBackgroundTask. Use this skill when requests mention Orchard Core Archive Later, ArchiveLaterPart, scheduled archiving, scheduled unpublish, content expiration, delayed archiving, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.ArchiveLater, ArchiveLaterPart, ArchiveLaterPartIndex, ArchiveLaterPartDisplayDriver, ScheduledArchivingBackgroundTask, IBackgroundTask, and IClock. It also helps with migrations, recipes, index behavior, and the code patterns captured in this skill.
What it loads into context
Frontmatter
201 tokensAlways available to the agent
SKILL.md
1,354 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Schedule Future Unpublishing
Files
SKILL.mdcore6,171 bytes
Read SKILL.md
# Orchard Core Archive Later - Prompt Templates
## Schedule Future Unpublishing
You are an Orchard Core expert. Generate content definitions and integration code for automatically unpublishing (archiving) a published content item when its scheduled time arrives.
### Guidelines
- Enable the `OrchardCore.ArchiveLater` feature. Its module dependency is `OrchardCore.Contents`.
- Attach `ArchiveLaterPart` to each content type whose items editors may schedule for archiving.
- `ArchiveLaterPart.ScheduledArchiveUtc` is a nullable UTC `DateTime`. The editor (rendered in the `Actions` zone) converts the editor's local date and time to UTC with `ILocalClock`; clearing the date or using the cancel button removes the schedule.
- Editors need the normal `PublishContent` permission (`CommonPermissions.PublishContent`) for the item to set or cancel the schedule; otherwise the posted value is ignored.
- The feature registers `ScheduledArchivingBackgroundTask` (title **Content Items Archiver**) as an `IBackgroundTask`. Its schedule is `* * * * *`, so due content is checked every minute, and only while the tenant is running.
- The task queries `ArchiveLaterPartIndex` for rows that are `Latest` and `Published` and whose `ScheduledArchiveDateTimeUtc` is earlier than `IClock.UtcNow`.View the complete source on GitHuborchardcore-asset-manager
When your agent uses it
Skill for building, watching, hosting, and copying frontend assets of Orchard Core modules and themes with the Orchard Core Assets Manager. Covers which parts of the asset pipeline work outside the Orchard Core repository, vendoring the assets-manager tool into your own solution, the three-tier package structure, Assets.json actions (vite, sass with RTL output, min, copy, concat, parcel, webpack, run), the orchard-minify output convention, build.config.mjs and assetsLookupGlob, Yarn workspaces and NPM aliasing, Vue 3 admin apps built as ES modules, the Bloom library, migration from Gulp, yarn build, watch, host, dry-run and clean commands, and troubleshooting. Use this skill when modifying SCSS, JS, TS, or Vue files of a module or theme, adding an Assets.json entry, or fixing asset build failures.
What it loads into context
Frontmatter
207 tokensAlways available to the agent
SKILL.md
4,309 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- What works from your own solution
- Set up the tool in your solution
- Package structure (three tiers)
- Assets.json
- Commands
- build.config.mjs
- Moving from Gulp
- Troubleshooting
- Sources
Files
SKILL.mdcore16,642 bytesSKILL.mdcore16,642 bytesSKILL.mdcore16,642 bytes
Read SKILL.md
# Orchard Core Asset Manager
The Orchard Core Assets Manager compiles the frontend sources of modules and themes into their `wwwroot` folders. It is a Node.js CLI based on [Concurrently](https://github.com/open-cli-tools/concurrently) that reads `Assets.json` files and runs Parcel, Vite, Webpack, Sass, minification, concatenation, copy, or arbitrary shell actions. Its own code is ES modules (`.mjs`).
The Asset Manager only **produces files**. Orchard Core serves and declares them through Resource Management (resource manifests and the `<script>`/`<style>` tag helpers), which works the same whatever tool built the files; see `orchardcore-resources`.
## What works from your own solution
Orchard Core packages already contain their compiled `wwwroot` files, so you never build Orchard Core's own assets. For your modules and themes:
| Piece | Outside the Orchard Core repository |
| --- | --- |
| Resource manifests, `asp-src`/`debug-src`, `.min.*` convention | Always works; independent of how the files are built. |
| `@orchardcore/assets-manager` CLI (`yarn build`, `watch`, `host`, `dry-run`, `clean`) | **Not published to npm.** It is a Yarn workspace inside the Orchard Core repository. Use it by copying `.scripts/assets-manager` into your repository (see below); every action then works. |View the complete source on GitHuborchardcore-audit-trail
When your agent uses it
Skill for configuring audit trail in Orchard Core. Covers audit event recording, the content and users audit trail events, AuditTrailPart for content tracking, the audit trail admin list with its Event, Category, Details and Actions columns, admin list filters and filter cards, settings and trimming recipes, custom audit event categories with AuditTrailOptions, recording events with IAuditTrailManager, and upgrading audit trail templates to Orchard Core 4.0. Use this skill when requests mention Orchard Core Audit Trail, Configure Audit Trail and Event Tracking, Enabling Audit Trail, Audit Trail Event Categories, AuditTrailEventName_SummaryAdmin, AuditTrailEventCategory_SummaryAdmin, AuditTrailEventTags_SummaryAdmin, IAuditTrailAdminListFilterProvider, AuditTrailIndexOptions, Attaching AuditTrailPart, or closely related setup or troubleshooting work. Strong matches include OrchardCore.AuditTrail, OrchardCore.Users.AuditTrail, OrchardCore.AuditTrail.Services, AuditTrailPermissions.
What it loads into context
Frontmatter
229 tokensAlways available to the agent
SKILL.md
3,336 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Audit Trail and Event Tracking
Files
SKILL.mdcore15,171 bytes
Read SKILL.md
# Orchard Core Audit Trail - Prompt Templates
## Configure Audit Trail and Event Tracking
You are an Orchard Core expert. Generate audit trail configurations, custom event providers, and AuditTrailPart setups for Orchard Core.
### Guidelines
- Enable `OrchardCore.AuditTrail` for audit event recording. Content events are recorded automatically when the Contents feature is enabled; enable `OrchardCore.Users.AuditTrail` to record user events.
- The Audit Trail provides an immutable, auditable log of system events (content changes, user events, etc.).
- Events are logged only for event types that are registered in `AuditTrailOptions` and enabled in **Settings** → **Audit Trail**.
- The audit trail list supports filtering by date range, category, event, user, and correlation ID, and sorting.
- Content events show version history, diffs, and allow restoring previous versions or deleted items. Restored content items are created as drafts that must be manually published.
- Attach `AuditTrailPart` to content types to let editors add comments to audit trail entries on save.View the complete source on GitHuborchardcore-auto-setup
When your agent uses it
Skill for configuring automatic setup in Orchard Core. Covers AutoSetup configuration for unattended installations under the OrchardCore AutoSetup configuration section, multi-tenant auto-provisioning, JSON configuration parameters, environment variable and user secrets overrides, distributed locking with Redis, feature profiles, and headless deployment automation. Use this skill when requests mention Orchard Core Auto Setup, Configure Automatic Setup for Orchard Core, Enabling Auto Setup, Configuration Parameters, Single-Tenant Auto Setup, Multi-Tenant Auto Setup, renaming OrchardCore_AutoSetup, or closely related setup or troubleshooting work. Strong matches include OrchardCore.AutoSetup, OrchardCore.Redis.Lock, AutoSetupOptions, TenantSetupOptions, LockOptions, CreateBuilder, IANA, DatabaseProvider, DatabaseSchema, FeatureProfile, ShellName, AutoSetupPath, Program.cs, SiteName, SiteTimeZone.
What it loads into context
Frontmatter
203 tokensAlways available to the agent
SKILL.md
2,699 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Automatic Setup for Orchard Core
Files
SKILL.mdcore10,834 bytesSKILL.mdcore10,834 bytes
Read SKILL.md
# Orchard Core Auto Setup - Prompt Templates
## Configure Automatic Setup for Orchard Core
You are an Orchard Core expert. Generate configuration for unattended installations, multi-tenant auto-provisioning, environment variable overrides, distributed locking, and headless deployment automation.
### Guidelines
- The `OrchardCore.AutoSetup` module automatically installs the application and tenants on the first request.
- AutoSetup must be explicitly enabled via `AddSetupFeatures("OrchardCore.AutoSetup")` in the startup project.
- The `Tenants` array must contain a root tenant with `ShellName` set to `Default`.
- Each tenant is installed on demand when its first request arrives.
- If `AutoSetupPath` is provided, that path must be requested to trigger installation.
- Configure it under `OrchardCore:AutoSetup` (the 3.x name `OrchardCore_AutoSetup` is deprecated but still read). The package's `ConfigurationSchema.json` gives IntelliSense and validation for this section in `appsettings.json`.View the complete source on GitHuborchardcore-autoroute
When your agent uses it
Skill for configuring AutoroutePart and the home route in Orchard Core. Covers Liquid URL patterns, AutoroutePartSettings, SEO-friendly slugs, permalink validation and numbering, container and contained item routing, the slug content handle, home page routing with the HomeRoute module and SetHomepage permission, route conflicts, and programmatic lookups with IAutorouteEntries. Use this skill when requests mention Orchard Core AutoroutePart, permalinks, slugs, slug handles, Set as homepage, the HomeRoute site setting, AutoroutePartSettings, container routing, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include OrchardCore.Autoroute, OrchardCore.HomeRoute, OrchardCore.ContentManagement.Routing, AutoroutePart, AutoroutePartSettings, AutoroutePartIndex, AutoroutePermissions, IAutorouteEntries, and TitlePart, plus migrations, recipes, and Liquid URL patterns.
What it loads into context
Frontmatter
220 tokensAlways available to the agent
SKILL.md
2,962 tokensWhen the skill is activated
Reference documents
2,123 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure AutoroutePart
Files
SKILL.mdcore12,954 bytesreferences/autoroute-examples.mddoc10,574 bytes
Read SKILL.md
# Orchard Core AutoroutePart - Prompt Templates
## Configure AutoroutePart
You are an Orchard Core expert. Generate code and configuration for AutoroutePart URL routing.
### Guidelines
- AutoroutePart generates SEO-friendly URLs (permalinks) for content items based on Liquid patterns.
- The default URL pattern is `{{ ContentItem.DisplayText | slugify }}` (equivalent to `{{ ContentItem | display_text | slugify }}`), which derives the slug from the content item's display text.
- AutoroutePart requires `TitlePart` (or another display text source) to be attached to the content type for the display text to resolve.
- Enable the `OrchardCore.Autoroute` feature before using AutoroutePart. It depends on `OrchardCore.ContentTypes` and `OrchardCore.HomeRoute`.
- The pattern is evaluated only when the path is empty (on create or update), in the culture of the content item. Changing the title does not change an existing permalink unless the editor clears it or uses **Update path** (`AllowUpdatePath`).
- Set `AllowCustomPath = true` to let editors override the generated URL with a custom path.View the complete source on GitHuborchardcore-azure-ai-search
When your agent uses it
Skill for configuring Azure AI Search in Orchard Core. Covers Azure AI Search setup, the OrchardCore Search AzureAISearch configuration section (formerly OrchardCore_AzureAISearch), AzureAISearchDefaultOptions read through IOptionsMonitor, index creation and management, recipe steps for index operations, search module integration, custom data indexing, vector fields and vector or hybrid queries with AzureAIClientFactory, permissions including ManageAzureAISearchSettings, and frontend search configuration. Use this skill when requests mention Orchard Core Azure AI Search, Configure Azure AI Search, Enabling Azure AI Search Features, Azure AI Search Connection Configuration, Creating an Azure AI Search Index Profile, Legacy Index Creation (Obsolete), or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.AzureAI, AzureAISearchIndexMetadata, AzureAISearchIndexMap, VectorSearchMappings, OrchardCore.Search, OrchardCore.Indexing.
What it loads into context
Frontmatter
221 tokensAlways available to the agent
SKILL.md
3,397 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Azure AI Search
Files
SKILL.mdcore15,694 bytesSKILL.mdcore15,694 bytesSKILL.mdcore15,694 bytes
Read SKILL.md
# Orchard Core Azure AI Search - Prompt Templates
## Configure Azure AI Search
You are an Orchard Core expert. Generate code and configuration for Azure AI Search integration in Orchard Core.
### Guidelines
- Enable `OrchardCore.AzureAI` to manage Azure AI Search indices (`OrchardCore.Search.AzureAI` is an obsolete feature id kept for compatibility).
- Configure the Azure AI Search connection in `appsettings.json` under `OrchardCore:Search:AzureAISearch` (Orchard Core 4.0; `OrchardCore_AzureAISearch` is deprecated but still read) or through the admin UI at **Settings > Search > Azure AI Search**.
- Read the effective connection settings with `IOptionsMonitor<AzureAISearchDefaultOptions>.CurrentValue`. Admin settings changes refresh the monitor without a shell release, so a cached `IOptions<AzureAISearchDefaultOptions>.Value` goes stale.
- Use the `CreateOrUpdateIndexProfile` recipe step to create indexes (preferred over the obsolete `azureai-index-create` step).
- Use the `ResetIndex` recipe step to restart indexing without deleting entries (preferred over the obsolete `azureai-index-reset` step).
- Use the `RebuildIndex` recipe step to delete and recreate indexes (preferred over the obsolete `azureai-index-rebuild` step).View the complete source on GitHuborchardcore-azure-data-protection
When your agent uses it
Skill for configuring Azure Data Protection in Orchard Core. Covers storing the ASP.NET Core Data Protection key ring in Azure Blob Storage with the OrchardCore.DataProtection.Azure feature, the OrchardCore DataProtection Azure configuration section, environment variable and Key Vault secret names, ConnectionString, ContainerName, BlobName and CreateContainer, per-tenant container and blob templating with ShellSettings, and why multi-instance deployments must share keys for cookies, antiforgery tokens, encrypted settings, and OpenID access tokens used by the Media Gallery. Use this skill when requests mention Orchard Core Azure Data Protection, shared data protection keys, DataProtectionKeys.xml, load-balanced Orchard Core, random logouts or antiforgery failures across instances, upgrading from the OrchardCore_DataProtection_Azure section, or closely related Orchard Core implementation, setup, extension, or troubleshooting work.
What it loads into context
Frontmatter
205 tokensAlways available to the agent
SKILL.md
1,298 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Module Overview
- Configuration (`OrchardCore:DataProtection:Azure`)
- Multi-Tenant Templating
- Multi-Instance Deployments
- Upgrading from 3.x
Files
SKILL.mdcore5,797 bytesSKILL.mdcore5,797 bytes
Read SKILL.md
# Orchard Core Azure Data Protection
## Module Overview
`OrchardCore.DataProtection.Azure` stores the ASP.NET Core Data Protection key
ring in Azure Blob Storage, isolated per tenant. All instances of a load-balanced
deployment must read the same key ring.
Orchard Core uses Data Protection for:
- Authentication cookies and antiforgery tokens.
- Decryptable persisted secrets (SMTP passwords, API keys; not user passwords).
- OpenID Connect server tokens in the Data Protection format (for example the Media Gallery bearer tokens).
- Temporary data (TempData).View the complete source on GitHuborchardcore-azure-key-vault
When your agent uses it
Skill for loading Orchard Core app configuration and secrets from Azure Key Vault. Covers the AddOrchardCoreAzureKeyVault configuration extension for IHostBuilder, IWebHostBuilder and ConfigurationManager, DefaultAzureCredential and custom TokenCredential authentication, the OrchardCore KeyVault Azure configuration section, KeyVaultName, VaultURI and ReloadInterval, AzureKeyVaultSecretManager secret name translation, and Orchard Core 4 secret names for the renamed configuration sections such as Media Azure, DataProtection Azure, Redis and Email Smtp. Use this skill when requests mention Orchard Core Azure Key Vault, secret management, connection string secrets, Managed Identity configuration, OrchardCore.Configuration.KeyVault, upgrading from the OrchardCore_KeyVault_Azure section, or closely related Orchard Core implementation, setup, extension, or troubleshooting work.
What it loads into context
Frontmatter
194 tokensAlways available to the agent
SKILL.md
1,535 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Load Configuration From Azure Key Vault
Files
SKILL.mdcore6,586 bytesSKILL.mdcore6,586 bytes
Read SKILL.md
# Orchard Core Azure Key Vault - Prompt Templates
## Load Configuration From Azure Key Vault
You are an Orchard Core expert. Wire Azure Key Vault as a configuration source so secrets such as connection strings and API keys are pulled from Key Vault instead of appsettings.
### Guidelines
- Azure Key Vault support ships in the `OrchardCore.Configuration.KeyVault` library. It is a host configuration provider, not a tenant feature, so you enable it in your startup code, not through a recipe or the admin Features screen.
- Add a package reference to `OrchardCore.Configuration.KeyVault` in the web (startup) project.
- Register the provider by calling `AddOrchardCoreAzureKeyVault` on the builder. Overloads exist for `IHostBuilder`, `IWebHostBuilder`, and `ConfigurationManager`.
- Authentication defaults to `DefaultAzureCredential` (Azure Identity). In Azure, prefer a Managed Identity; locally, sign in through Visual Studio, VS Code, or the Azure CLI. You may pass a custom `TokenCredential` to override this.
- Configure the vault with the `OrchardCore:KeyVault:Azure` section (in appsettings or environment variables, since it is read before Key Vault is added): provide `KeyVaultName` or `VaultURI`, and optionally `ReloadInterval` (in seconds) to poll for changes. Leave `ReloadInterval` blank to disable reloading.
- Secret-name translation: Key Vault forbids `:` and `_`, so Orchard Core's `AzureKeyVaultSecretManager` translates `---` to `_` and `--` to `:` when mapping a secret name back to a configuration key.View the complete source on GitHuborchardcore-azure-media
When your agent uses it
Skill for configuring Azure Blob media storage in Orchard Core. Covers the OrchardCore.Media.Azure.Storage and OrchardCore.Media.Azure.ImageCache features, the OrchardCore Media Azure and Media Azure ImageCache configuration sections, environment variable and Key Vault secret names, connection and container setup, tenant templating with ShellSettings, Azure Data Lake Storage Gen2 hierarchical namespace support with UseHierarchicalNamespace, the Media Cache and purging, resized image caching in Blob Storage, TUS resumable upload staging in Blob Storage, and CDN use. Use this skill for Azure Media Storage, MediaBlobStorageOptions, MediaBlobImageCacheOptions, BlobFileStore, ContainerName, BasePath, CreateContainer, RemoveContainer, RemoveFilesFromBasePath, AzureResizedImageCache, ADLS Gen2, upgrading from OrchardCore_Media_Azure or OrchardCore.Media.Azure.ImageSharpImageCache, or related implementation, setup, extension, and troubleshooting work.
What it loads into context
Frontmatter
220 tokensAlways available to the agent
SKILL.md
2,101 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Module Overview
- Azure Media Storage (`OrchardCore:Media:Azure`)
- Tenant Templating
- Media Cache
- Azure Media Image Cache (`OrchardCore:Media:Azure:ImageCache`)
- Resumable Uploads
- Upgrading from 3.x
Files
SKILL.mdcore8,832 bytes
Read SKILL.md
# Orchard Core Azure Media Storage
## Module Overview
The `OrchardCore.Media.Azure` module stores media in Azure Blob Storage instead
of `App_Data`:
- **`OrchardCore.Media.Azure.Storage`** — replaces the media store with Blob Storage. Depends on (and enables) `OrchardCore.Media.Cache`.
- **`OrchardCore.Media.Azure.ImageCache`** — stores resized images in Blob Storage instead of `wwwroot/{tenant}/media-cache`.
Media is still served by the Orchard Core site: the Media Cache fetches blobs on
demand, which keeps on-the-fly resizing working, and `AssetUrl` helpers point to
the site (or to `Media:CdnBaseUrl`). Only one storage provider is active at a
time.View the complete source on GitHuborchardcore-background-tasks
When your agent uses it
Skill for creating background tasks and scheduled jobs in Orchard Core. Covers IBackgroundTask implementation, the BackgroundTask attribute (Title, Schedule, Description, Enable, LockTimeout, LockExpiration, UsePipeline), atomic tasks with distributed locks, BackgroundServiceOptions polling configuration, IBackgroundTaskEventHandler, and the Background Tasks admin list with bulk Enable and Disable actions. Use this skill when requests mention Orchard Core Background Tasks, Create Background Tasks, Background Task with Service Dependencies, Registering a Background Task, Enabling Background Tasks Feature, background task schedule or lock settings, Common Cron Schedule Expressions, or closely related setup or troubleshooting work. Strong matches include OrchardCore.BackgroundTasks, IBackgroundTask, BackgroundTaskAttribute, BackgroundTaskSettings, BackgroundServiceOptions, ManageBackgroundTasks, IServiceProvider, GetRequiredService, ISession, ContentItemIndex, AddSingleton.
What it loads into context
Frontmatter
204 tokensAlways available to the agent
SKILL.md
1,831 tokensWhen the skill is activated
Reference documents
389 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Create Background Tasks
Files
SKILL.mdcore8,344 bytesreferences/background-tasks-examples.mddoc1,916 bytes
Read SKILL.md
# Orchard Core Background Tasks - Prompt Templates
## Create Background Tasks
You are an Orchard Core expert. Generate background task implementations for Orchard Core.
### Guidelines
- Background tasks implement `IBackgroundTask` and run on a cron schedule declared with `[BackgroundTask]`.
- Tasks are registered in `Startup.cs` as `IBackgroundTask` singletons. Inject only singleton-safe services in the constructor; resolve scoped services (`ISession`, `IContentManager`, ...) from the `IServiceProvider` passed to `DoWorkAsync`.
- Each run gets its own tenant shell scope. The schedule is evaluated in the site time zone.
- `[BackgroundTask]` properties: `Title`, `Schedule` (default `*/5 * * * *`), `Description`, `Enable` (default `true`), `LockTimeout` and `LockExpiration` (milliseconds), and `UsePipeline` (build the tenant routing pipeline so the task can generate URLs).
- A task is atomic when both `LockTimeout` and `LockExpiration` are greater than `0`: on a distributed lock (for example Redis), only one instance runs it at a time. Lock values are not limited to 30 seconds.
- Enable `OrchardCore.BackgroundTasks` to manage tasks under **Tools** → **Background Tasks**: enable or disable, change the schedule, the lock values, and `UsePipeline`, overriding the attribute values. This requires the `ManageBackgroundTasks` permission.View the complete source on GitHuborchardcore-blazor
When your agent uses it
Skill for building Blazor CMS applications with Orchard Core. Covers Blazor SSR and Server Interactive rendering, Razor class library structure, Blazor components (App, Layout, NavMenu, Router), content integration with IContentHandleManager and IContentManager, sanitized body HTML with BodyAspect, dependency injection in Blazor pages, SEO and alias handling, and multi-tenant base URLs. Use this skill when requests mention Orchard Core Blazor CMS, Building Blazor Applications with Orchard Core, Solution Structure, Razor Class Library Project File, Program.cs with the Orchard Core Blazor pipeline, App.razor, or closely related Orchard Core implementation or troubleshooting work. Strong matches include AddRazorComponents, MapRazorComponents, AddInteractiveServerComponents, IContentHandleManager, IContentManager, BodyAspect, ISiteService, NavigationManager, StreamRendering.
What it loads into context
Frontmatter
204 tokensAlways available to the agent
SKILL.md
3,945 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Building Blazor Applications with Orchard Core
Files
SKILL.mdcore16,614 bytes
Read SKILL.md
# Orchard Core Blazor CMS - Prompt Templates
## Building Blazor Applications with Orchard Core
You are an Orchard Core expert. Generate code and configuration for building Blazor CMS applications powered by Orchard Core, including SSR, Server Interactive rendering, content integration, and multi-tenant support.
### Guidelines
- Orchard Core supports Blazor SSR (Static Server Rendering) and Server Interactive rendering modes.
- Blazor `.razor` files **must** live in a separate Razor class library project, not directly in the Orchard Core web project. Adding `.razor` files to Orchard Core modules is not supported.
- The Razor class library must reference `Microsoft.AspNetCore.App` as a `FrameworkReference` to access ASP.NET Core–specific APIs.
- Use the **Headless site** recipe when setting up an Orchard Core instance for Blazor front-end consumption.
- Register Blazor services and map Razor components inside `AddOrchardCms()` using `.ConfigureServices()` and `.Configure()` — do not register them outside of the Orchard Core pipeline.
- Use `IContentHandleManager` to resolve a content item ID from an alias handle, then use `IContentManager` to load the content item.View the complete source on GitHuborchardcore-breadcrumbs
When your agent uses it
Skill for Orchard Core 4.0 breadcrumbs on admin screens and front-end views. Covers the breadcrumb and breadcrumb-item tag helpers, the required IHtmlContent title and safe HtmlContentString wrapping, ancestor links with routes, URLs, permissions and link-enabled, IBreadcrumbProvider and BreadcrumbContext postprocessing registered with AddBreadcrumbProvider, the DashboardBreadcrumbProvider ancestor, AdminSettings.ShowBreadcrumb, Breadcrumb and BreadcrumbItem shape alternates, Breadcrumb.cshtml overrides, and IShapeFactory.BreadcrumbAsync. Use this skill when requests mention Orchard Core breadcrumbs, replacing an admin page title h1, breadcrumb trails, Show breadcrumb, BreadcrumbItem-Title alternates, or closely related implementation, theming, or troubleshooting work. Strong matches include OrchardCore.Navigation, OrchardCore.Navigation.Core, OrchardCore.AdminDashboard, BreadcrumbTagHelper, BreadcrumbItem, IBreadcrumbProvider, BreadcrumbContext, HtmlContentString.
What it loads into context
Frontmatter
210 tokensAlways available to the agent
SKILL.md
4,170 tokensWhen the skill is activated
Reference documents
1,393 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Mental Model
- Adding a Breadcrumb to a View
- `<breadcrumb>` Attributes
- `<breadcrumb-item>` Attributes
- Postprocessing with `IBreadcrumbProvider`
- Dashboard Ancestor
- Hiding Admin Breadcrumbs
- Front-End Use
- Theming
- Gotchas
- Upgrading from 3.x
- Related Skills
Files
SKILL.mdcore18,365 bytesSKILL.mdcore18,365 bytesSKILL.mdcore18,365 bytesSKILL.mdcore18,365 bytesSKILL.mdcore18,365 bytesSKILL.mdcore18,365 bytesSKILL.mdcore18,365 bytesSKILL.mdcore18,365 bytesreferences/breadcrumbs-examples.mddoc5,710 bytes
Read SKILL.md
# Orchard Core Breadcrumbs
Orchard Core 4.0 renders admin page titles as a **named trail with an explicit current-page title**, e.g. _Dashboard › Manage Content › Edit Article_. The `Breadcrumb` and `BreadcrumbItem` shapes live in the always-enabled `OrchardCore.Navigation` module; the tag helpers live in `OrchardCore.Navigation.Core`. No feature needs to be enabled and inline authoring needs no provider registration.
## Mental Model
- The parent `<breadcrumb>` declares the trail `name` and the current page `title`. Both are required.
- Every `<breadcrumb-item>` child is an **ancestor**, never the current page.
- For a visible trail the helper collects children in declaration order, runs every `IBreadcrumbProvider` in DI registration order on the same ancestor list, keeps the resulting order (no sorting), then **always appends the title as the final, unlinked current node** with the fixed `Id = "Title"`.
- On admin requests the helper also renders the title as an `<h1>` below the trail and registers it as a `<title>` segment, so the view must not render its own heading.
- Visibility is decided first. A hidden admin trail skips all child and provider work and uses only the explicit title (see "Hiding Admin Breadcrumbs").
- Keep built-in-style views inline: the title and screen-specific ancestors in the owning view, a lightweight provider only for shared or cross-module ancestor changes, and shape alternates for presentation. No breadcrumb manager, builder, or named-provider base class exists or is needed.
- `INavigationProvider` is unrelated: it builds menus, not breadcrumb trails.
View the complete source on GitHuborchardcore-caching
When your agent uses it
Skill for configuring and managing caching in Orchard Core. Covers response compression (OrchardCore.ResponseCompression), dynamic cache, shape caching, cache tag helpers, ISignal-based invalidation, ITagCache, IDynamicCacheService, IDistributedCache with the OrchardCore.Redis.Cache feature and the OrchardCore Redis configuration section, cache profiles and Cache-Control headers, caching content items with JConvert, and CacheContext dependencies. Use this skill when requests mention Orchard Core Caching, Enabling Caching Features, Response Compression, Dynamic Cache (Shape-Level Caching), Shape Cache Tag Helper (Razor), Liquid Cache Block, distributed cache, or closely related Orchard Core implementation or troubleshooting work. Strong matches include OrchardCore.ResponseCompression, OrchardCore.DynamicCache, OrchardCore.Redis, OrchardCore.Environment.Cache, OrchardCore.ContentManagement.
What it loads into context
Frontmatter
197 tokensAlways available to the agent
SKILL.md
2,651 tokensWhen the skill is activated
Reference documents
2,094 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure and Manage Caching
Files
SKILL.mdcore12,782 bytesreferences/caching-examples.mddoc10,093 bytes
Read SKILL.md
# Orchard Core Caching - Prompt Templates
## Configure and Manage Caching
You are an Orchard Core expert. Generate code and configuration for caching strategies including response compression, dynamic cache, shape-level caching, cache invalidation, and distributed cache.
### Guidelines
- Enable `OrchardCore.ResponseCompression` to compress HTTP responses with gzip or Brotli.
- Enable `OrchardCore.DynamicCache` for shape-level output caching with dependency tracking.
- Use `ISignal` to invalidate cached entries when underlying data changes.
- Use `IDistributedCache` for storing serialized data across multiple servers.
- Use `IDynamicCacheService` to programmatically manage dynamic cache entries.
- Use `CacheContext` to declare cache dependencies, vary-by keys, and expiration policies.View the complete source on GitHuborchardcore-configuration
When your agent uses it
Skill for configuring Orchard Core applications. Covers IShellConfiguration, configuration sources hierarchy, the Orchard Core 4.0 section names grouped by service (Email Smtp, Media Azure, Search Elasticsearch) and the deprecated OrchardCore_ prefixed names, environment variable and Azure Key Vault naming, ConfigurationSchema.json IntelliSense for appsettings.json, GetSectionCompat for module authors, tenant pre-configuration and post-configuration, shared tenant databases, TempDirectory, ORCHARD_APP_DATA, PostConfigure overrides, and live IOptionsMonitor options. Use this skill when requests mention Orchard Core Configuration, appsettings.json sections, renaming OrchardCore_ sections, configuration environment variables, or closely related Orchard Core setup, upgrade, or troubleshooting work. Strong matches include IShellConfiguration, IOptionsMonitor, IOptionsUpdateNotifier, GetSectionCompat, ConfigurationSchema.json, JsonSchemaSegment, DatabaseProvider, TablePrefixPattern, ITempDirectoryProvider.
What it loads into context
Frontmatter
220 tokensAlways available to the agent
SKILL.md
4,042 tokensWhen the skill is activated
Reference documents
1,787 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Orchard Core Applications
Files
SKILL.mdcore17,257 bytesSKILL.mdcore17,257 bytesSKILL.mdcore17,257 bytesSKILL.mdcore17,257 bytesreferences/configuration-section-names.mddoc5,891 bytes
Read SKILL.md
# Orchard Core Configuration - Prompt Templates
## Configure Orchard Core Applications
You are an Orchard Core expert. Generate configuration JSON, environment variables, and C# code for Orchard Core application settings, tenant configuration, and `IOptions` overrides.
### Guidelines
- Orchard Core extends ASP.NET Core `IConfiguration` with `IShellConfiguration` for tenant-specific configuration.
- All module configuration lives under the root `OrchardCore` section.
- In Orchard Core 4.0, sections are **grouped by service with a nested section per provider** and no `OrchardCore_` prefix, e.g. `OrchardCore:Email:Smtp`, `OrchardCore:Media:Azure`, `OrchardCore:Search:Elasticsearch`. Always generate the new names.
- The previous `OrchardCore_*` names still work but are deprecated. When both are present, the new name wins, and an array under the new name replaces the old array.
- Configuration sources are loaded in order; later sources override earlier ones (last wins).
- Environment variables use double underscore `__` as the hierarchy separator; Azure Key Vault secrets use `--`.View the complete source on GitHuborchardcore-content-definition-handlers
When your agent uses it
Skill for intercepting Orchard Core content definitions as they are built with IContentDefinitionHandler, and for creating system-defined content types, parts, and fields that users cannot remove or modify through the admin UI or recipes. Covers the ContentTypeBuilding, ContentPartBuilding, ContentTypePartBuilding, and ContentPartFieldBuilding events, injecting a part into a type programmatically, and marking a definition system-defined via ContentSettings.IsSystemDefined. Use this skill when requests mention IContentDefinitionHandler, system-defined or system-type content types, parts, or fields, undeletable or non-removable parts, injecting a content part into every content type, ContentSettings.IsSystemDefined, ContentTypeBuildingContext, or the DashboardPartContentTypeDefinitionHandler pattern. Strong matches include OrchardCore.ContentTypes.Events.IContentDefinitionHandler, ContentSettings, IsSystemDefined, and ContentTypeDefinitionRecord.
What it loads into context
Frontmatter
212 tokensAlways available to the agent
SKILL.md
1,958 tokensWhen the skill is activated
Reference documents
648 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Intercept content definitions as they are built
- Inject a system-defined part into a content type
- Read the system-defined flag
- What "system-defined" enforces
- Troubleshooting
Files
SKILL.mdcore9,818 bytesreferences/content-definition-handler-examples.mddoc3,353 bytes
Read SKILL.md
# Orchard Core Content Definition Handlers & System-Defined Definitions
## Intercept content definitions as they are built
You are an Orchard Core expert. `IContentDefinitionHandler` lets a module intercept and modify content type, part, and field definitions **while they are being built, before they are cached**. The primary use is injecting a part into a content type programmatically and marking types, parts, or fields as *system-defined* so users cannot remove or modify them through the admin UI or recipes. This complements — it does not replace — the `IContentDefinitionManager` migration APIs (see the `orchardcore-content-types` skill) used for ordinary, user-manageable definitions.
### Guidelines
- Implement `OrchardCore.ContentTypes.Events.IContentDefinitionHandler` and register it with `services.AddScoped<IContentDefinitionHandler, T>()` in the module's `Startup`.
- The interface has four events; each receives a `*BuildingContext` exposing the definition **record** being built and its name:
- `ContentTypeBuilding(ContentTypeBuildingContext context)` — a content type is being built.
- `ContentPartBuilding(ContentPartBuildingContext context)` — a content part definition is being built.
- `ContentTypePartBuilding(ContentTypePartBuildingContext context)` — a part is being attached to a type.
- `ContentPartFieldBuilding(ContentPartFieldBuildingContext context)` — a field is being built on a part.View the complete source on GitHuborchardcore-content-fields
When your agent uses it
Skill for adding and configuring common Orchard Core content fields. Covers field settings, TextField minimum and maximum length, the new LiquidField, HTML and Markdown field rendering and sanitization, supported editor options, display modes, custom field editors as ES modules, and migration patterns. Use this skill when requests mention Orchard Core Content Fields, Add and Configure Content Fields, General Pattern for Adding a Field, TextField, TextField Settings, TextField Editors or closely related Orchard Core work. Strong matches include work with OrchardCore.Taxonomies, OrchardCore.ContentLocalization, OrchardCore.Application.Cms.Targets, FieldSettings, HtmlFieldSettings, MarkdownFieldSettings, LiquidField, TextFieldSettings, MinLength, MaxLength, NumericFieldSettings, ContentPartFieldSettings, WithField, WithSettings, TextField, TextFieldPredefinedListEditorSettings.
What it loads into context
Frontmatter
203 tokensAlways available to the agent
SKILL.md
6,555 tokensWhen the skill is activated
Reference documents
2,603 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Add and Configure Content Fields
- TextField
- HtmlField
- LiquidField
- NumericField
- BooleanField
- DateField
- DateTimeField
- TimeField
- ContentPickerField
- MediaField
- LinkField
- MultiTextField
- UserPickerField
- YoutubeField
- TaxonomyField
- LocalizationSetContentPickerField
- MarkdownField
- GeoPointField
- Other Built-In Editors
- Custom Field Editors
- Upgrading from 3.x
- Installing Third-Party Field Modules
Files
SKILL.mdcore26,862 bytesSKILL.mdcore26,862 bytesSKILL.mdcore26,862 bytesSKILL.mdcore26,862 bytesSKILL.mdcore26,862 bytesSKILL.mdcore26,862 bytesreferences/content-fields-examples.mddoc15,083 bytes
Read SKILL.md
# Orchard Core Content Fields - Prompt Templates
## Add and Configure Content Fields
You are an Orchard Core expert. Generate migration code and recipes for common content fields and verify feature-specific options against the enabled module.
### Guidelines
- Fields are added to content parts using `AlterPartDefinitionAsync` in a migration.
- Each field has a `FieldSettings` base with `Hint` (string) and `Required` (bool).
- Each field type has its own specific settings class (e.g., `TextFieldSettings`, `NumericFieldSettings`).
- Fields also have `ContentPartFieldSettings` controlling `DisplayName`, `Description`, `Editor`, `DisplayMode`, and `Position`.
- Use `.WithEditor("EditorName")` to select an editor variant.
- Use `.WithDisplayMode("DisplayModeName")` to select a display variant.View the complete source on GitHuborchardcore-content-items
When your agent uses it
Skill for working with Orchard Core content items. Covers the content item lifecycle, IContentManager API including batched GetAsync, content item JSON structure, querying with YesSql and the IDX_ContentItemIndex_ContentItemId index, content handlers, recipe import and export, links to the Contents admin list with several contentTypeId or stereotype values, and accessing parts and fields programmatically. Use this skill when requests mention Orchard Core Content Items, Working with Content Items, Content Item Lifecycle, Content Item JSON Structure, IContentManager API, Accessing Parts and Fields, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.ContentManagement, IContentManager, ISession, IContentHandler, TitlePart, AutoroutePart, ContentPart, TextField, ContentItemIndex, PublishContentContext, ContentsAdminList.
What it loads into context
Frontmatter
207 tokensAlways available to the agent
SKILL.md
3,213 tokensWhen the skill is activated
Reference documents
1,766 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Working with Content Items
Files
SKILL.mdcore14,609 bytesreferences/content-items-examples.mddoc8,667 bytes
Read SKILL.md
# Orchard Core Content Items - Prompt Templates
## Working with Content Items
You are an Orchard Core expert. Generate code and configuration for managing content items in Orchard Core.
### Guidelines
- Content items are the fundamental data units in Orchard Core, composed of parts and fields.
- Every content item has a `ContentItemId` (stable across versions) and a `ContentItemVersionId` (unique per version).
- Use `IContentManager` for all content item CRUD operations; do not manipulate the database directly.
- `ValidateAsync` returns a `ContentValidateResult` and does not cancel the
current session. If validation follows a mutation, call
`ISession.CancelAsync()` explicitly when the result fails.View the complete source on GitHuborchardcore-content-localization
When your agent uses it
Skill for configuring content localization in Orchard Core. Covers LocalizationPart for multi-language content, IContentLocalizationManager, the ContentCulturePicker feature and shape, ContentRequestCultureProvider, culture cookie settings, the ContentLocalization CulturePickerOptions configuration section, Liquid localization filters (switch_culture_url, localization_set), localized sitemaps, the contents admin list culture filter, GraphQL localizations, and ContentLocalizationPermissions. Use this skill when requests mention Orchard Core Content Localization, Attaching LocalizationPart to a Content Type, Attaching LocalizationPart via Recipe, ContentCulturePicker Cookie Settings via Recipe, Cookie Lifetime Configuration, translating content items, culture switcher, upgrading content localization to Orchard Core 4, or closely related Orchard Core implementation, setup, extension, or troubleshooting work.
What it loads into context
Frontmatter
188 tokensAlways available to the agent
SKILL.md
2,089 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Enabling Content Localization Features
- Attaching LocalizationPart to a Content Type
- Attaching LocalizationPart via Recipe
- Localizing Content in Code
- Permissions
- ContentCulturePicker
- Liquid Filters
- Admin, Sitemaps, and GraphQL
- Upgrading from 3.x
Files
SKILL.mdcore9,548 bytes
Read SKILL.md
# Orchard Core Content Localization
## Guidelines
- Enable `OrchardCore.ContentLocalization` (depends on Content Types and
Localization) to manage localized versions of content items. Configure the
site cultures first (see `orchardcore-localization`).
- Attach `LocalizationPart` to every content type that needs translations. Each
item stores its `Culture`; all translations share a `LocalizationSet`.
- Enable `OrchardCore.ContentLocalization.ContentCulturePicker` (requires
Autoroute) for a front-end culture picker and URL-based culture detection.
- Enable `OrchardCore.ContentLocalization.Sitemaps` for localized sitemaps with
`hreflang` alternates.
- Use `switch_culture_url` and `localization_set` Liquid filters for customView the complete source on GitHuborchardcore-content-parts
When your agent uses it
Skill for adding and configuring common built-in Orchard Core content parts. Covers selected settings, LiquidPart, HTML and Markdown body sanitization, TitlePart patterns on publish, migration patterns, and recipe configuration. Use this skill when requests mention Orchard Core Content Parts, Add and Configure Content Parts, General Pattern for Attaching a Part, TitlePart, TitlePart Settings, TitlePart Migration or closely related Orchard Core work. Strong matches include work with OrchardCore.Title, OrchardCore.Liquid, LiquidPart, OrchardCore.Autoroute, OrchardCore.Html, HtmlBodyPartSettings, OrchardCore.Markdown, MarkdownBodyPartSettings, OrchardCore.Lists, OrchardCore.Flows, OrchardCore.Alias, OrchardCore.PublishLater, OrchardCore.ContentLocalization, OrchardCore.Taxonomies, OrchardCore.Seo, OrchardCore.ContentPreview.
What it loads into context
Frontmatter
200 tokensAlways available to the agent
SKILL.md
3,922 tokensWhen the skill is activated
Reference documents
2,165 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Add and Configure Content Parts
- TitlePart
- AutoroutePart
- HtmlBodyPart
- MarkdownBodyPart
- LiquidPart
- ListPart
- FlowPart
- BagPart
- AliasPart
- PublishLaterPart
- LocalizationPart
- TaxonomyPart
- SeoMetaPart
- PreviewPart
- Content Type Options
- Installing Third-Party Part Modules
- Upgrading from 3.x
Files
SKILL.mdcore16,305 bytesreferences/content-parts-examples.mddoc12,197 bytes
Read SKILL.md
# Orchard Core Content Parts - Prompt Templates
## Add and Configure Content Parts
You are an Orchard Core expert. Generate migration code and recipes for attaching common built-in content parts.
### Guidelines
- Parts are attached to content types using `AlterTypeDefinitionAsync` in a migration.
- Each part has specific settings that control its behavior.
- Part settings are applied via `.WithSettings(new XxxPartSettings { ... })`.
- Use `.WithPosition("N")` to control the order of parts in the editor.
- Content part editor wrapper placement uses `ContentPart_Edit` with differentiator `{ContentType}-{PartName}` when you need to move or hide the whole editor row.
- Part display shapes and inner `XxxPart_Edit` shapes from part drivers typically use `{PartName}` as the differentiator.View the complete source on GitHuborchardcore-content-preview
When your agent uses it
Skill for configuring live draft preview in Orchard Core content editing. Covers ContentPreview, PreviewPart, PreviewPartSettings patterns, PreviewAspect URLs and custom aspect handlers, the preview draft controller, BroadcastChannel live updates, content-preview-text and content-preview-select hooks, the contentpreview render event for custom editors, preview detection, multi-node distributed cache, and frontend preview pipeline handling. Use this skill when requests mention Orchard Core Content Preview, live preview, PreviewPart, draft rendering, preview URL patterns, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.ContentPreview, PreviewPart, PreviewPartSettings, PreviewAspect, ContentPreviewFeature, PreviewController, PreviewStartupFilter, and IContentItemDisplayManager. It also helps with preview migrations, recipes, Liquid patterns, and the code patterns captured in this skill.
What it loads into context
Frontmatter
206 tokensAlways available to the agent
SKILL.md
2,267 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Preview Unpublished Content
Files
SKILL.mdcore11,005 bytesSKILL.mdcore11,005 bytesSKILL.mdcore11,005 bytesSKILL.mdcore11,005 bytes
Read SKILL.md
# Orchard Core Content Preview - Prompt Templates
## Preview Unpublished Content
You are an Orchard Core expert. Generate configuration and content definitions for live preview of an editor's in-memory draft without publishing it.
### Guidelines
- Enable the `OrchardCore.ContentPreview` feature. Its module dependency is `OrchardCore.Contents`.
- The feature adds a **Preview** button (`ContentPreview_Button` shape, hidden by placement for menu items and dashboard widgets) to content editors. The button uses resource authorization for `Preview content` (`OrchardCore.Contents.CommonPermissions.PreviewContent`, including owner and per-type variants); the draft and display endpoints also require it.
- Live preview (unsaved form values) is different from **Preview Draft** in the content list, which renders the latest stored version.
- Attach `PreviewPart` only when a decoupled frontend needs a custom URL that should render the draft. The core preview UI works without it.
- Set `PreviewPartSettings.Pattern` to a Liquid path. The pattern is rendered with `Model` and `ContentItem`.
- Patterns should return a tenant-relative path starting with `/`, such as `{{ ContentItem | display_url }}` or `/articles/{{ ContentItem.ContentItemId }}`. Do not include a host or scheme; line breaks are stripped. External headless frontends cannot be preview targets.View the complete source on GitHuborchardcore-content-queries
When your agent uses it
Skill for querying content items in Orchard Core using YesSql and saved queries. Covers ContentItemIndex queries and its indexes (including IDX_ContentItemIndex_ContentItemId), custom YesSql indexes, ISession and IContentManager queries, saved SQL queries of the Queries module (Cyqwel parser, SELECT-only validation, parameters, paging), IQueryManager for creating and running saved queries from code, how SQL templates execute, custom query sources with IQuerySource, AddQuerySource and IQueryHandler, the Queries recipe step, the api/queries endpoint (ApiExecuteQueryGet and ApiExecuteQueryPost), query permissions, and the Liquid query filter. Use this skill when requests mention Orchard Core Content Queries, Query Content Items, ContentItemIndex, SQL queries, saved queries, or related troubleshooting. Strong matches include OrchardCore.Queries, ISession, IContentManager, MapIndex, IQueryManager, IQuerySource, QueryHandlerBase, ManageSqlQueries.
What it loads into context
Frontmatter
228 tokensAlways available to the agent
SKILL.md
4,731 tokensWhen the skill is activated
Reference documents
914 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Query Content Items
- Saved SQL Queries (Queries Module)
Files
SKILL.mdcore21,085 bytesSKILL.mdcore21,085 bytesSKILL.mdcore21,085 bytesreferences/content-queries-examples.mddoc4,290 bytes
Read SKILL.md
# Orchard Core Content Queries - Prompt Templates
## Query Content Items
You are an Orchard Core expert. Generate code for querying content items using YesSql indexes and IContentManager.
### Guidelines
- Orchard Core uses YesSql as its document database abstraction over SQL.
- `ISession` is the primary interface for querying YesSql indexes.
- `ContentItemIndex` is the built-in index for all content items.
- Custom indexes can be created for frequently queried fields.
- `IContentManager` provides higher-level content operations (Get, New, Create, Publish).
- Always use `async/await` patterns for database queries.View the complete source on GitHuborchardcore-content-relationships
When your agent uses it
Skill for modeling content relationships in Orchard Core. Covers five relationship strategies including BagPart for embedded items, ContentPickerField for many-to-many references, FlowPart for layout widgets, ListPart for hierarchical collections, and Taxonomies for categorization and tagging, plus ContentPickerField settings, DisplayedStereotypes, TitlePattern, and reverse lookups with ContentPickerFieldIndex. Use this skill when requests mention Orchard Core Content Relationships, a Relationship Strategy Decision Matrix, embedded items, related content, many-to-many references, parent-child content, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include BagPart, ContentPickerField, ContentPickerFieldSettings, ContentPickerFieldIndex, LocalizationSetContentPickerField, FlowPart, ListPart, TaxonomyField, and DataMigration code patterns and recipes.
What it loads into context
Frontmatter
201 tokensAlways available to the agent
SKILL.md
3,481 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Model Content Relationships
Files
SKILL.mdcore16,721 bytesSKILL.mdcore16,721 bytes
Read SKILL.md
# Orchard Core Content Relationships - Prompt Templates
## Model Content Relationships
You are an Orchard Core expert. Guide the selection and implementation of content relationship strategies — connecting content items using built-in parts and fields.
### Guidelines
- Orchard Core provides five built-in strategies for relating content items: `BagPart`, `ContentPickerField`, `FlowPart`, `ListPart`, and `Taxonomies`.
- Choose the strategy based on ownership semantics, editing experience, and query requirements.
- `BagPart` and `FlowPart` store child items **embedded** within the parent (inline editing, fast retrieval).
- `ListPart` stores child items **independently** but linked to a parent (separate URLs, separate editing).
- `ContentPickerField` creates **references** between independently managed items (many-to-many).
- `Taxonomies` provide **categorization** with hierarchical terms and indirect many-to-many relationships.View the complete source on GitHuborchardcore-content-types
When your agent uses it
Skill for creating, managing, and configuring Orchard Core Content Types. Covers content definition services, content part definitions, content field definitions, stereotypes, block picker categories and thumbnails, the ContentTypes configuration section, content type permissions, and content type indexing. Use this skill when requests mention Orchard Core Content Types, Create a Content Type, Migration Pattern, Content Field Configuration or closely related Orchard Core work. Strong matches include work with TitlePart, AutoroutePart, CommonPart, ListPart, DataMigration, IContentDefinitionManager, IContentDefinitionService, AlterFieldContext, AlterTypePartContext, WithPart, WithSettings, AutoroutePartSettings, WithField, TextField, HtmlField, LiquidField, WithCategory, WithThumbnailPath, ContentTypesOptions, ContentTypesPermissions.
What it loads into context
Frontmatter
190 tokensAlways available to the agent
SKILL.md
1,452 tokensWhen the skill is activated
Reference documents
644 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Create a Content Type
Files
SKILL.mdcore6,630 bytesSKILL.mdcore6,630 bytesSKILL.mdcore6,630 bytesreferences/content-type-examples.mddoc2,951 bytes
Read SKILL.md
# Orchard Core Content Types - Prompt Templates
## Create a Content Type
You are an Orchard Core expert. Generate code and configuration for creating a content type.
### Guidelines
- Content type technical names must be PascalCase with no spaces.
- Always include a `TitlePart` unless the content type uses a custom title strategy.
- Add `AutoroutePart` for routable content types with a URL pattern.
- Use `CommonPart` conventions (owner, created/modified dates) where appropriate.
- Attach `ListPart` if the content type should act as a container.
- Use content part and field settings to configure editors and display modes.View the complete source on GitHuborchardcore-contents-admin-list-filters
When your agent uses it
Skill for adding custom filters to the Orchard Core content items admin list. Covers IContentsAdminListFilterProvider search terms, ContentsAdminListFilterOptions default terms per content type or stereotype and exact match, scoping the list to several content types or stereotypes with the contentTypeId and stereotype query string values, and documenting filters in the redesigned Available Filters dialog with a DisplayDriver<ContentOptionsViewModel> Thumbnail card. Use this skill when requests mention custom content admin list filters, IContentsAdminListFilterProvider, QueryEngineBuilder<ContentItem>, WithNamedTerm, WithDefaultTerm, ContentsAdminListFilterOptions, DefaultTermNames, UseExactMatch, the Filter syntax dialog, ContentOptionsViewModel filter cards, ContentsAdminFilters Thumbnail views, upgrading filter cards to Orchard Core 4.0, or closely related content admin list search work. Strong matches include OrchardCore.Contents, ContentsAdminList, and ContentsAdminFilters-*.Thumbnail.cshtml.
What it loads into context
Frontmatter
229 tokensAlways available to the agent
SKILL.md
2,834 tokensWhen the skill is activated
Reference documents
1,368 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Add a custom filter to the content items admin list
- Register the filter logic
- Scope the list to content types or stereotypes
- Register the filter card
- The card template
- Upgrading from 3.x
- Troubleshooting
Files
SKILL.mdcore12,509 bytesreferences/contents-admin-list-filters-examples.mddoc6,436 bytes
Read SKILL.md
# Orchard Core Content Items Admin List Filters
## Add a custom filter to the content items admin list
You are an Orchard Core expert. The content items admin list (**Content → Content Items**) has a search box that parses tokens such as `text:`, `type:`, `status:`, and `sort:`. Add your own token by implementing a filter provider, then document it for end users by adding a card to the **Available Filters** dialog. These are two independent extension points: the filter **logic** and the filter **card**. A filter still works without a card, but users will not discover it; a card without a matching provider documents a filter that does nothing.
### Guidelines
- Enable `OrchardCore.Contents`. The content items admin list ships with this feature.
- Implement `IContentsAdminListFilterProvider` to add searchable terms; register it with `services.AddScoped<IContentsAdminListFilterProvider, T>()`.
- Build terms against `QueryEngineBuilder<ContentItem>`. Filter against a YesSql index (`ContentItemIndex` or a custom index), not against materialized content items.
[Credential-related source omitted]
- Use `OneCondition` for a term that accepts a single value (the `fa-minus`/**Single** icon). Use `ManyCondition` for a term that supports the `AND`, `OR`, and `NOT` operators and groups (the `fa-bars`/**Multiple** icon), and supply both the matching and the negated predicate.
- Bare text is routed to the default term, `text` (`ContentsAdminListFilterOptions.DefaultTermName`). To route bare text to another term when the list is scoped to a content type or stereotype, map it in `ContentsAdminListFilterOptions.DefaultTermNames` (a dictionary keyed by content type or stereotype name, valued by term name). Mark that term's card with the `fa-check`/**Default** icon.View the complete source on GitHuborchardcore-contents-api
When your agent uses it
Skill for using Orchard Core content APIs. Covers the Contents REST API minimal endpoints (GET, POST with draft, DELETE) secured by the Api bearer scheme, AccessContentApi and content permission checks, Problem Details error responses, the ManageLiquidTemplates requirement for Liquid content mutations, GraphQL content queries and filtering, Liquid and Razor content loading helpers, content item lifecycle states, and admin list customization. Use this skill when requests mention Orchard Core Contents API, api/content, content REST endpoints, content lifecycle states, CommonPart, Authentication for REST API, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.Contents, OrchardCore.Apis.GraphQL, OrchardCore.OpenId.Validation, IContentManager, IOrchardHelper, IContentsAdminListFilterProvider, AccessContentApi, and ManageLiquidTemplates.
What it loads into context
Frontmatter
207 tokensAlways available to the agent
SKILL.md
3,487 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Using Orchard Core Content APIs
Files
SKILL.mdcore15,367 bytesSKILL.mdcore15,367 bytes
Read SKILL.md
# Orchard Core Contents API - Prompt Templates
## Using Orchard Core Content APIs
You are an Orchard Core expert. Generate code and configuration for accessing content items through REST API, GraphQL, Liquid, and Razor in Orchard Core.
### Guidelines
- The `OrchardCore.Contents` module owns the REST endpoints and the `AccessContentApi` permission. GraphQL requires `OrchardCore.Apis.GraphQL`; Liquid and Razor helpers are separate display-management integrations.
- REST API endpoints use the `Api` authentication scheme. Configure an API authentication provider, such as OpenID token validation, for that scheme. Cookie sessions are not accepted.
- Mutating items that contain Liquid parts or fields also requires `ManageLiquidTemplates` in 4.0.
- Create a dedicated API user with appropriate permissions for API calls.
- GraphQL queries are available when the `OrchardCore.Apis.GraphQL` feature is enabled.
- Use Liquid `Content` object to load content items by alias, slug, ID, or version ID.View the complete source on GitHuborchardcore-cors
When your agent uses it
Skill for administering tenant-specific cross-origin resource sharing in Orchard Core. Covers CorsSettings policies, CorsPolicySetting options, the settings recipe step, CorsService persistence, CorsOptionsConfiguration, admin configuration, deployment, and secure origin restrictions. Use this skill when requests mention Orchard Core CORS, CorsSettings, cross-origin requests, allowed origins, CORS policies, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.Cors, CorsSettings, CorsPolicySetting, CorsService, CorsOptionsConfiguration, CorsOptions, and ManageCorsSettings. It also helps with feature recipes, policy deployment, security validation, and the code patterns captured in this skill.
What it loads into context
Frontmatter
174 tokensAlways available to the agent
SKILL.md
1,865 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Tenant CORS Policies
Files
SKILL.mdcore8,704 bytesSKILL.mdcore8,704 bytes
Read SKILL.md
# Orchard Core CORS - Prompt Templates
## Configure Tenant CORS Policies
You are an Orchard Core expert. Generate secure configuration and code for the Orchard Core CORS module.
### Guidelines
- Enable the `OrchardCore.Cors` feature. The module has no declared feature dependencies.
- The module calls `app.UseCors()` at Orchard Core's CORS pipeline order and configures ASP.NET Core `CorsOptions` from tenant site settings.
- Configure policies from **Settings → Security → Cross-Origin Resource Sharing**. The page requires the security-critical `ManageCorsSettings` permission (Administrator by default).
- Policies are tenant site settings (`CorsSettings`). There is no `appsettings.json` configuration section for CORS; use the admin UI or the `settings` recipe step.
- Each `CorsPolicySetting` has a name, origin, header, method, credentials, default-policy, and exposed-header settings.
- The admin rejects a policy that combines **Allow credentials** with **Allow any origin** or an `AllowedOrigins` entry of `*`. At runtime, `CorsOptionsConfiguration` skips a policy that has both `AllowCredentials` and `AllowAnyOrigin` (for example one imported by a recipe) and logs a warning.View the complete source on GitHuborchardcore-custom-settings
When your agent uses it
Skill for creating admin-defined custom site settings in Orchard Core using the CustomSettings stereotype. Covers settings content types in code or recipes, the per-section ManageCustomSettings permission, GetCustomSettingsAsync, Liquid access through Site.Properties and the PermittedSiteProperties allow list, rendering stored HTML safely with sanitize_html, the custom-settings recipe step, the Custom Settings deployment step, and when to use a code-defined SiteDisplayDriver instead. Use this skill when requests mention Orchard Core Custom Settings, Create Custom Site Settings, Accessing Custom Settings in Code or Liquid, Site.Properties is empty, or closely related Orchard Core implementation, upgrade, or troubleshooting work. Strong matches include OrchardCore.CustomSettings, CustomSettings stereotype, ISiteService, GetCustomSettingsAsync, ContentPart, DataMigration, IContentDefinitionManager, SettingsLiquidOptions, PermittedSiteProperties.
What it loads into context
Frontmatter
203 tokensAlways available to the agent
SKILL.md
2,697 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Create Custom Site Settings
Files
SKILL.mdcore12,266 bytes
Read SKILL.md
# Orchard Core Custom Settings - Prompt Templates
## Create Custom Site Settings
You are an Orchard Core expert. Generate code and configuration for creating site-wide settings sections using the `CustomSettings` stereotype.
### Guidelines
- Enable the `OrchardCore.CustomSettings` feature to use custom site settings.
- Each custom settings section is a content type with the `CustomSettings` stereotype, made of parts and fields like any other content type.
- For this stereotype the type editor hides the `Creatable`, `Listable`, `Draftable`, and `Versionable` options; also leave `Securable` off, since each section gets its own permission.
- Do **not** mark an existing content type with the `CustomSettings` stereotype; this breaks existing content items of that type.
- Sections appear under **Settings** in the admin, next to module-provided settings.
- Each section gets a `ManageCustomSettings_{TypeName}` permission under the `OrchardCore.CustomSettings` group of the Roles editor; it has no default role stereotype.View the complete source on GitHuborchardcore-custom-user-settings
When your agent uses it
Skill for creating custom user settings sections in Orchard Core. Covers the CustomUserSettings stereotype, tab-based organization in the user editor, per-type ManageOwnCustomUserSettings permissions, Liquid and code access through user Properties and CustomUserSettingsService, SummaryAdmin display in the users list, placement customization, the custom-user-settings recipe step and deployment step, and SectionDisplayDriver extension. Use this skill when requests mention Orchard Core Custom User Settings, Creating a Custom User Settings Type, Creating via Recipe, Importing user settings values, Accessing Custom User Settings in Liquid, showing user profile fields in the users list, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include OrchardCore.Users.CustomUserSettings, CustomUserSettings, CustomUserSettingsService, SectionDisplayDriver, IContentDefinitionManager, and UserProfile.
What it loads into context
Frontmatter
203 tokensAlways available to the agent
SKILL.md
2,891 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Create Custom User Settings
Files
SKILL.mdcore13,295 bytes
Read SKILL.md
# Orchard Core Custom User Settings - Prompt Templates
## Create Custom User Settings
You are an Orchard Core expert. Generate code and configuration for creating custom per-user settings sections using the `CustomUserSettings` stereotype.
### Guidelines
- Enable the `OrchardCore.Users.CustomUserSettings` feature to use custom user settings.
- Custom user settings are organized in sections, each represented by a content type with the `CustomUserSettings` stereotype.
- When creating a custom user settings content type, disable `Creatable`, `Listable`, `Draftable`, and `Securable` metadata — they do not apply.
- Do **not** mark existing content types with the `CustomUserSettings` stereotype; this will break existing content items of that type.
- Each section appears as a separate tab in the user editor (_Access Control → Users → Edit_).
- Custom user settings are composed of parts and fields like any other content type.View the complete source on GitHuborchardcore-data
When your agent uses it
Skill for configuring the Orchard Core data layer. Covers database provider selection, YesSql options (OrchardCore YesSql section), Sqlite options (Data Sqlite section), table naming presets (Data TableOptions section), document options (Documents section), connection string setup, DbConnection access, SQL dialect abstraction, table prefix and schema conventions, Dapper integration, transactions, and the Orchard Core 4.0 configuration section renames from OrchardCore_YesSql, OrchardCore_Data_Sqlite, OrchardCore_Data_TableOptions and OrchardCore_Documents. Use this skill when requests mention Orchard Core Data, Sqlite Connection Pooling, YesSql Configuration Options, Database Table Options, Creating a DbConnection, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include OrchardCore.Data, OrchardCore.Data.YesSql, IDbConnectionAccessor, IStore, ISqlDialect, YesSqlOptions, DocumentOptions, ShellSettings, Dapper.
What it loads into context
Frontmatter
228 tokensAlways available to the agent
SKILL.md
2,391 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure and Use the Orchard Core Data Layer
Files
SKILL.mdcore10,885 bytes
Read SKILL.md
# Orchard Core Data - Prompt Templates
## Configure and Use the Orchard Core Data Layer
You are an Orchard Core expert. Generate code and configuration for database access, YesSql settings, Dapper queries, connection management, and table prefix handling.
### Guidelines
- Orchard Core uses YesSql as its document database abstraction over relational databases.
- Supported database providers: `Sqlite` (default), `SqlConnection` (SQL Server), `Postgres`, `MySql`. For SQL Server, MySQL and PostgreSQL, create the database first; Orchard Core creates the tables, not the database.
- Provider, connection string, table prefix and schema are tenant settings (setup screen or `IShellConfiguration`).
- Prefer `IContentManager` for content items and `ISession` for YesSql documents and indexes; use raw SQL only for custom relational tables.
- Use `IDbConnectionAccessor` (`OrchardCore.Data`, package `OrchardCore.Data.Abstractions`) to create `DbConnection` instances pointing to the tenant database.
- Use `IStore.Configuration` for the `SqlDialect`, `TablePrefix` (already includes the separator) and `Schema`.View the complete source on GitHuborchardcore-data-formulas
When your agent uses it
Skill for the formula language and filters of Orchard Core Data Pipelines Core. Covers formula syntax, operators and precedence, missing values and type rules, the full catalog of data pipeline formula functions (text, number, date, logical and aggregate) with signatures, using formulas from code with ExpressionCompiler, CompiledExpression, Aggregates and DataPipelineFormulas, adding or replacing formula functions with ExpressionFunction.CreateScalar, CreateAggregate, AddExpressionFunction, IExpressionFunctionProvider and IExpressionFunctionCatalog, the DataFilterOperator filter operators, the Filter rows transform, source-side row filtering, DataFilterPredicates, and how a data source applies query conditions with DataCondition, DataConditions.Keys, DataConditions.DateRange and IsJoinKey. Use it for data pipeline formulas, calculated fields, custom formula functions, data source filters, or pushing filter conditions into a custom data source.
What it loads into context
Frontmatter
209 tokensAlways available to the agent
SKILL.md
5,253 tokensWhen the skill is activated
Reference documents
3,409 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Syntax
- Operators
- Functions
- Using formulas from code
- Adding a formula function
- Filters
Files
SKILL.mdcore21,477 bytesSKILL.mdcore21,477 bytesSKILL.mdcore21,477 bytesSKILL.mdcore21,477 bytesSKILL.mdcore21,477 bytesSKILL.mdcore21,477 bytesSKILL.mdcore21,477 bytesSKILL.mdcore21,477 bytesSKILL.mdcore21,477 bytesreferences/data-formulas-examples.mddoc16,041 bytes
Read SKILL.md
# Orchard Core Data Formulas and Filters
The Data Pipelines Core feature (Orchard Core 4.0) includes a formula language, used by the **Filter rows** and **Add calculated fields** steps of data pipelines (see `orchardcore-data-pipelines`) and by features such as reports, and the filter operators that consumers offer to data sources (see `orchardcore-data-sources`). A formula computes a value from a row, such as `[Price] * [Quantity]` or `UPPER(TRIM([Country]))`.
Code lives in the `OrchardCore.DataSources.Expressions` and `OrchardCore.DataSources` namespaces (packages `OrchardCore.DataSources.Core` and `OrchardCore.DataSources.Abstractions`, version `4.*`). Register functions in a module that depends on `OrchardCore.DataPipelines.Core`, or in a `[RequireFeatures("OrchardCore.DataPipelines.Core")]` startup.
## Syntax
| Element | Syntax |
|---------|--------|
| Field | Technical name in brackets, `[TitlePart.Title]`. A `]` in a name is doubled: `[Size [cm]]]` for `Size [cm]`. |
| Text | Single or double quotes, `'CA'` or `"CA"`. Double a quote to escape it: `'It''s'`. |
| Number | Digits with a dot, `42`, `0.25`. Without a dot it is an integer. |
| Constants | `TRUE`, `FALSE`, `NULL` |View the complete source on GitHuborchardcore-data-localization
When your agent uses it
Skill for managing translation data in Orchard Core with the OrchardCore.DataLocalization module. Covers the Dynamic Translations editor UI, translation statistics dashboard, ViewDynamicTranslations and ManageTranslations permissions with per-culture permissions, built-in translation providers and their contexts, custom ILocalizationDataProvider implementation, the Translations recipe step and deployment steps, IDataLocalizer, TranslationsManager, and the Liquid d filter. Use this skill when requests mention Orchard Core Data Localization, Dynamic Translations, Enabling Data Localization, Permissions, Built-in Data Providers, Creating a Custom Localization Data Provider, Data Localization Filters, translating content type names or permission categories, upgrading data localization to Orchard Core 4, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include OrchardCore.DataLocalization and OrchardCore.Localization.Data.
What it loads into context
Frontmatter
197 tokensAlways available to the agent
SKILL.md
2,101 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Enabling Data Localization
- Admin UI
- Permissions
- Built-in Data Providers
- Creating a Custom Localization Data Provider
- Import Translations via Recipe
- Deployment Steps
- Using IDataLocalizer in Razor Views
- Liquid Filter: `d`
- Managing Translations in Code
- When to Use Each Localization Approach
- Upgrading from 3.x
Files
SKILL.mdcore9,588 bytesSKILL.mdcore9,588 bytes
Read SKILL.md
# Orchard Core Data Localization
## Guidelines
- Enable `OrchardCore.DataLocalization` (depends on `OrchardCore.Localization`)
for database-backed translations of dynamic strings such as content type and
field display names, admin menu text, and permission categories.
- Use PO files (`OrchardCore.Localization`, see `orchardcore-localization`) for
static UI strings in views and code, including permission descriptions
declared with `LocalizationSource.Create(value, typeof(DeclaringType))`.
- Use `OrchardCore.ContentLocalization` for translating content items.
- Implement `ILocalizationDataProvider` to expose custom translatable strings.
- Keys must be human-readable display values, because untranslated keys are
displayed as-is.View the complete source on GitHuborchardcore-data-migrations
When your agent uses it
Skill for creating data migrations in Orchard Core. Covers content type migrations, YesSql index table creation, adding SQL indexes to existing tables, schema alterations, column rules and SQLite or MySQL provider quirks, patching existing content item JSON in batches, replacing a part on every content type, recipe migrations with IRecipeMigrator, data seeding, uninstall, AddDataMigration registration, and the migration version chain with skipped versions. Use this skill when requests mention Orchard Core Data Migrations, Migration with Custom Content Part and Fields, Migration with YesSql Index Table, Incremental Migration (UpdateFrom), or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.ContentManagement.Metadata, OrchardCore.Data.Migration, DataMigration, IDataMigration, AddDataMigration, IRecipeMigrator, IContentDefinitionManager, SchemaBuilder, CreateIndex, WithPart.
What it loads into context
Frontmatter
216 tokensAlways available to the agent
SKILL.md
4,497 tokensWhen the skill is activated
Reference documents
743 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Create Data Migrations
Files
SKILL.mdcore20,372 bytesreferences/data-migrations-examples.mddoc3,613 bytes
Read SKILL.md
# Orchard Core Data Migrations - Prompt Templates
## Create Data Migrations
You are an Orchard Core expert. Generate data migration code for Orchard Core modules.
### Guidelines
- Data migrations inherit from `DataMigration`.
- Place migrations in a `Migrations` folder in the feature project.
- Name migration classes clearly and keep them `internal sealed`.
- Migrations define content types, parts, fields, and database indexes.
- Use `CreateAsync()` for initial migration, `UpdateFrom1Async()`, `UpdateFrom2Async()` for incremental updates.
- `Create`, `CreateAsync`, `UpdateFromX`, `UpdateFromXAsync`, `Uninstall`, and `UninstallAsync` can be marked `static` when they do not use injected services, inherited instance members, or other instance state.View the complete source on GitHuborchardcore-data-pipeline-steps
When your agent uses it
Skill for extending Orchard Core Data Pipelines in code. Covers a custom Data Pipelines step with DataPipelineStepType and IDataPipelineStepType, categories and ports, DescribeAsync, ExecuteAsync and the step context, back-pressure, DataPipelineRowReader for sort-like steps, step icons with the DataPipelineStepIcon shape, step editors with DataPipelineStepDisplayDriver, DataPipelineEditorContext and the designer editor contract (auto-apply, data-dpd-reload, the data-pipelines-editors script, ocat views), step secrets with DataPipelineSecrets, AddDataPipelineStep, keeping values between runs with GetState and SetState, OnSucceeded, IDataPipelineHandler, IDataPipelineRunHandler, shared links with ISharedLinkHandler and ISharedLinkManager, and building an incremental export. Use it for a custom data pipeline step, transform, source or destination, a step editor or icon, reacting to pipeline runs, sharing a module resource through links, or exporting data incrementally to an external system.
What it loads into context
Frontmatter
240 tokensAlways available to the agent
SKILL.md
5,822 tokensWhen the skill is activated
Reference documents
5,033 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Extension points
- Packages and dependencies
- Adding a step type
- Giving a step type its icon
- Adding the editor of a step type
- Keeping values between runs
- Confirming work when a run succeeds
- Reacting to changes of pipelines
- Reacting to the end of runs
- Sharing a resource from a module
- Building an incremental export
Files
SKILL.mdcore24,972 bytesSKILL.mdcore24,972 bytesSKILL.mdcore24,972 bytesSKILL.mdcore24,972 bytesSKILL.mdcore24,972 bytesSKILL.mdcore24,972 bytesSKILL.mdcore24,972 bytesreferences/data-pipeline-steps-examples.mddoc23,163 bytes
Read SKILL.md
# Orchard Core Data Pipeline Steps (extending Data Pipelines)
Modules extend the Data Pipelines module (Orchard Core 4.0) with services registered in their startup. This skill covers step types and everything around them. Using the module: `orchardcore-data-pipelines`. Data sources and file formats: `orchardcore-data-sources`. Formula functions and filter conditions: `orchardcore-data-formulas`.
## Extension points
| To add | Implement | Register |
|--------|-----------|----------|
| A transform (mask, enrich), source or destination | `DataPipelineStepType<TStep, TSettings>`, `IDataPipelineStepType` | `services.AddDataPipelineStep<TStep, TDriver>()` |
| A transform that sees every row first (sort-like) | A step type with `DataPipelineRowReader` and the data operations | same |
| The editor of a step | `DataPipelineStepDisplayDriver<TSettings, TViewModel>` + views | with its step type |
| The icon of a step type | `DataPipelineStepIcon-{StepName}.cshtml` | |
| Values kept between runs | `context.GetState` / `context.SetState` | |
| Work confirmed when a run succeeds | `context.Run.OnSucceeded` | |View the complete source on GitHuborchardcore-data-pipelines
When your agent uses it
Skill for using the Orchard Core Data Pipelines module (OrchardCore.DataPipelines), the visual ETL designer. Covers the features and the FTP and SFTP modules, the designer with drafts, versions, previews and runs, every built-in step (Read a data source and its filters, Read a media file, Filter rows, Add calculated fields, Convert time zone, Select fields, Sort rows, Group and summarize, Join, Combine rows, Remove duplicates, Keep first rows, Create a file with several worksheets, Zip files, media library, download link, FTP, SFTP, web API, email and Save content items destinations), placeholders, incremental runs, scheduling, run history, the Run Data Pipeline Task and Data Pipeline Run Completed Event activities, permissions, secrets, shared links, SFTP host keys, the DataPipelines recipe and deployment steps, and DataPipelineOptions. Use it for data pipelines, scheduled data exports, importing CSV or Excel files as content items, or ETL in Orchard Core.
What it loads into context
Frontmatter
239 tokensAlways available to the agent
SKILL.md
7,865 tokensWhen the skill is activated
Reference documents
2,455 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Features and modules
- Concepts
- Designing pipelines
- Steps
- Runs
- Workflows
- Security
- Saving files to the media library
- Recipes and deployment
- Configuration
- Extending data pipelines
Files
SKILL.mdcore33,061 bytesSKILL.mdcore33,061 bytesSKILL.mdcore33,061 bytesSKILL.mdcore33,061 bytesSKILL.mdcore33,061 bytesreferences/data-pipelines-examples.mddoc10,958 bytes
Read SKILL.md
# Orchard Core Data Pipelines
The Data Pipelines module ships with Orchard Core 4.0. Administrators design pipelines under **Tools > Data Pipelines** that read data, transform it and deliver it, without code: for example, read the orders of the last 30 days, join their customers, compute totals, write an Excel workbook and upload it to an SFTP server every night, or import a CSV file of the media library as content items.
Related skills:
- `orchardcore-data-sources` - the data sources, file formats and data operations pipelines read and write with.
- `orchardcore-data-formulas` - the formula language of **Filter rows** and **Add calculated fields**, and the filter operators.
- `orchardcore-data-pipeline-steps` - custom step types, editors, icons, state, handlers and shared links in code.
## Features and modules
| Feature / module | Description |
|------------------|-------------|View the complete source on GitHuborchardcore-data-sources
When your agent uses it
Skill for the data layer of the Orchard Core Data Pipelines Core feature (OrchardCore.DataPipelines.Core). Covers data sources, data sets, schemas and field types, reading with the access of a user, the built-in Contents, Users and Queries data sources, ContentDataSourceOptions for reading more parts and fields, reading from code with IDataSourceManager, the CSV, Excel, JSON and JSON Lines file formats and IDataWorkbookFormat, the DataSorter, DataDistinct, DataAggregator and DataJoin data operations, IDataTimeZoneResolver, custom data sources with RecordDataSource, RecordDataSet, IDataSource and AddDataSource, confirming what was read with ConsumerId and OnSucceeded, aggregating in the data source with IDataAggregateSource and IAggregateRecordDataSet, and custom file formats with AddDataFileFormat. Use this skill for Orchard Core data sources, exposing module data to data pipelines or reports, a custom data source or file format, or change feeds.
What it loads into context
Frontmatter
232 tokensAlways available to the agent
SKILL.md
5,588 tokensWhen the skill is activated
Reference documents
2,593 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Packages and dependencies
- Concepts
- Built-in data sources
- Reading a data source from code
- File formats
- Data operations
- Time zones
- Extending data sources
Files
SKILL.mdcore23,756 bytesSKILL.mdcore23,756 bytesSKILL.mdcore23,756 bytesSKILL.mdcore23,756 bytesSKILL.mdcore23,756 bytesSKILL.mdcore23,756 bytesSKILL.mdcore23,756 bytesSKILL.mdcore23,756 bytesSKILL.mdcore23,756 bytesSKILL.mdcore23,756 bytesSKILL.mdcore23,756 bytesSKILL.mdcore23,756 bytesSKILL.mdcore23,756 bytesSKILL.mdcore23,756 bytesSKILL.mdcore23,756 bytesSKILL.mdcore23,756 bytesreferences/data-sources-examples.mddoc12,567 bytes
Read SKILL.md
# Orchard Core Data Sources (Data Pipelines Core)
The **Data Pipelines Core** feature (`OrchardCore.DataPipelines.Core`, also `DataPipelinesConstants.CoreFeatureId`) ships with Orchard Core 4.0 in the Data Pipelines module. It is the data layer that data pipelines and other features, such as reports, share:
- **data sources** that expose site data as typed, tabular **data sets**, read in batches with the access of a user;
- **file formats** rows are written to and read from: CSV, Excel, JSON and JSON Lines;
- the **formula language** and filter operators (see `orchardcore-data-formulas`);
- bounded-memory **data operations** (sort, distinct, group, join) that spill to temporary files;
- **shared links** (see `orchardcore-data-pipeline-steps`).
The feature has no admin screen and is `EnabledByDependencyOnly`: features such as `OrchardCore.DataPipelines` enable it. Using pipelines: `orchardcore-data-pipelines`.
## Packages and dependencies
View the complete source on GitHuborchardcore-decoupled-cms
When your agent uses it
Skill for building decoupled and headless CMS applications with Orchard Core. Covers custom Razor Pages and controllers, loading content by ID, alias, and handle with IOrchardHelper, rendering HTML and Markdown safely now that only rendered output is sanitized, alias patterns, PreviewPart integration, consuming the Content API with the Api authentication scheme, RFC 9457 Problem Details error responses, and OpenAPI client generation. Use this skill when requests mention Orchard Core Decoupled CMS, Headless CMS, Project Setup, Content Item Properties, Loading Content by ID or Alias, Content API errors, or closely related Orchard Core implementation or troubleshooting work. Strong matches include OrchardCore.Application.Cms.Core.Targets, IOrchardHelper, MarkdownToHtmlAsync, BodyAspect, HtmlBodyPart, AliasPart, PreviewPart, api/content, application/problem+json, SkipStatusCodePages, OrchardCore.OpenApi.
What it loads into context
Frontmatter
219 tokensAlways available to the agent
SKILL.md
4,415 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Building a Decoupled CMS with Orchard Core
Files
SKILL.mdcore19,516 bytes
Read SKILL.md
# Orchard Core Decoupled CMS - Prompt Templates
## Building a Decoupled CMS with Orchard Core
You are an Orchard Core expert. Generate code and configuration for building decoupled CMS applications where the front-end is driven by custom Razor Pages or Controllers while the back-end content management is handled by Orchard Core.
### Guidelines
- A **decoupled** CMS hosts the front-end and back-end in the same web application, but only the back-end is driven by the CMS. Developers write custom Razor Pages or Controllers for the front-end.
- Use the `OrchardCore.Application.Cms.Core.Targets` NuGet package to add Orchard Core CMS capabilities to any ASP.NET Core app.
- Call `builder.Services.AddOrchardCms()` in `Program.cs` to register all Orchard Core services. Do **not** call `builder.Services.AddRazorPages()` separately — `AddOrchardCms()` invokes it internally.
- Call `app.UseOrchardCore()` to add the Orchard Core middleware pipeline. Remove default ASP.NET middleware like `UseRouting()`, `UseAuthorization()`, and `MapRazorPages()` — Orchard Core handles these internally.
- Use the **Blank site** or **Headless site** recipe during setup for decoupled/headless scenarios.
- Inject `OrchardCore.IOrchardHelper` (aliased as `Orchard`) in Razor Pages to load and render content items.View the complete source on GitHuborchardcore-deferred-tasks
When your agent uses it
Skill for running fire-and-forget work after a request in Orchard Core using HttpBackgroundJob.ExecuteAfterEndOfRequestAsync and ShellScope.AddDeferredTask. Covers deferring work until the YesSql session is committed, running in a fresh isolated ShellScope, restoring the current user, deferred signals, IDocumentStore.AfterCommitSuccess, the IOptionsUpdateNotifier post-commit options refresh, and choosing between deferred tasks, after-request jobs and background tasks. Use this skill when requests mention Orchard Core HttpBackgroundJob, ExecuteAfterEndOfRequestAsync, ShellScope.AddDeferredTask, AddDeferredSignal, RegisterBeforeDispose, running code after the session is saved, or closely related Orchard Core troubleshooting work. Strong matches include OrchardCore.BackgroundJobs, OrchardCore.Environment.Shell.Scope, ShellScope, IShellHost, IDocumentStore, ISignal, IHttpContextAccessor.
What it loads into context
Frontmatter
208 tokensAlways available to the agent
SKILL.md
1,533 tokensWhen the skill is activated
Reference documents
1,431 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to use which
- Why "after the session is saved" works
- Fire-and-forget after the request
- Defer until after commit, then fire-and-forget
- Guidelines
Files
SKILL.mdcore6,960 bytesreferences/deferred-tasks-examples.mddoc6,933 bytes
Read SKILL.md
# Orchard Core Deferred Tasks and After-Request Background Jobs
Orchard Core provides two complementary ways to run code *after* the main work
of a request, without adding a scheduled `IBackgroundTask`. Both live in the
`OrchardCore.Abstractions` package, so any module can use them.
- `ShellScope.AddDeferredTask` — runs a delegate in a **fresh isolated scope**
once the current shell scope tears down, **after the YesSql session has been
committed**. Use it to react to committed data (indexing, cache busting,
sending a signal) and to see your own just-saved changes.
- `HttpBackgroundJob.ExecuteAfterEndOfRequestAsync` — truly **fire-and-forget**.
It returns immediately, waits for the current `HttpContext` to be released
(end of the HTTP response), reloads the shell, restores the current user, and
runs the job in an isolated scope. Use it for longer work you do not want theView the complete source on GitHuborchardcore-deployment-remote
When your agent uses it
Skill for configuring remote deployment import and export in Orchard Core. Covers RemoteInstance, RemoteClient, RemoteInstanceService, RemoteClientService, the remote import endpoint, API key handling, DeploymentPermissions, upload validation of imported packages, and remote deployment administration. Use this skill when requests mention Orchard Core Remote Deployment, remote import, remote export, RemoteInstance, RemoteClient, deployment API client, remote deployment target, ImportRemoteInstance, ManageRemoteInstances, ExportRemoteInstances, or closely related Orchard Core implementation setup extension or troubleshooting work. Strong matches include work with OrchardCore.Deployment.Remote, OrchardCore.Deployment, IDeploymentTargetProvider, RemoteInstanceDeploymentTargetProvider, RemoteInstanceService, RemoteClientService, ExportRemoteInstanceController, and ImportRemoteInstanceController.
What it loads into context
Frontmatter
187 tokensAlways available to the agent
SKILL.md
1,836 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Enable Remote Deployment
- Permissions
- Remote Clients and Instances
- Remote Import and Export Flow
- Use the Services in a Module
- Security and Troubleshooting
- Service Responsibilities
- Plan Compatibility
- Operational Guardrails
- Upgrading from 3.x
Files
SKILL.mdcore9,089 bytesSKILL.mdcore9,089 bytesSKILL.mdcore9,089 bytesSKILL.mdcore9,089 bytesSKILL.mdcore9,089 bytesSKILL.mdcore9,089 bytes
Read SKILL.md
# Orchard Core Remote Deployment
`OrchardCore.Deployment.Remote` extends the Deployment module with remote
import and export. It registers `RemoteInstanceService`, `RemoteClientService`,
an `IDeploymentTargetProvider`, HTTP client support, admin navigation, and
permissions. Remote deployments should be treated as privileged administrative
operations because they can move site configuration and content.
## Guidelines
- Enable `OrchardCore.Deployment.Remote`; its manifest depends on `OrchardCore.Deployment`.
- Configure a remote client on the destination and a remote instance on the source.
- Use HTTPS remote URLs and unique high-entropy API keys.
- Give remote-deployment permissions only to trusted administrators or service accounts.View the complete source on GitHuborchardcore-deployments
When your agent uses it
Skill for authoring Orchard Core deployment plans and custom deployment steps. Covers plan creation, plan recipes, package export and import, export targets, remote deployment, built-in step selection, DeploymentPermissions, custom steps with LocalizationSource Category and Title labels, and end-to-end extensibility. Use this skill when requests mention Orchard Core Deployments, Create a Deployment Plan, Deployment Step Types, Export or Import a Deployment Package, Remote Deployment, Deployment Plan Recipe Export, Creating Deployment Steps in Code, deployment step categories or titles, or upgrading custom deployment steps to Orchard Core 4.0. Strong matches include OrchardCore.Deployment, OrchardCore.Deployment.Remote, IDeploymentSource, IDeploymentTargetProvider, IDeploymentTargetHandler, DeploymentStep, DeploymentPermissions, LocalizationSource, AddDeployment, AddDeploymentTargetHandler, DeploymentPlansRecipeStep, and DeploymentPlanResult.
What it loads into context
Frontmatter
206 tokensAlways available to the agent
SKILL.md
3,181 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Create and run a deployment plan
- Permissions
- Create a plan with a recipe
- Built-in deployment steps
- Remote deployment
- Write a custom deployment step
- Deployment targets and target handlers
- Upgrading from 3.x
Files
SKILL.mdcore15,153 bytesSKILL.mdcore15,153 bytesSKILL.mdcore15,153 bytes
Read SKILL.md
# Orchard Core Deployments
Use deployment plans to export configuration or content as a recipe package, then import that package into another tenant. A plan is an ordered collection of deployment steps. Enable the feature that owns each selected step on the source and target tenant before creating, exporting, or importing the plan.
## Create and run a deployment plan
1. Enable `OrchardCore.Deployment` and the features that contribute the required steps.
2. In **Tools → Deployments → Plans**, select **Add Deployment Plan**, then open the plan and use **Add Step**. The step picker groups steps by category and can be filtered by category.
3. Configure each step and arrange the steps in the order they should be written to `Recipe.json`.
4. Select **Execute**, then a deployment target. **File Download** generates a `.zip` package; `OrchardCore.Deployment.Remote` adds remote instances as targets.
5. On the target site, go to **Tools → Deployments** and use **Package Import** (`.zip` package or `.json` recipe) or **JSON Import** (recipe JSON in an editor). Importing executes the recipe immediately.
Order steps deliberately. For example, enable features first, define content types before content, configure indexes before requesting a rebuild, and create workflow definitions only after their activity-providing features are enabled.
View the complete source on GitHuborchardcore-diagnostics
When your agent uses it
Skill for configuring Orchard Core diagnostics error handling. Covers custom error pages, status code pages, DiagnosticsStartupFilter, IConfigureOptions integration, error shapes, alternate shape names, the 429 Too Many Requests page, Problem Details for Api and SkipStatusCodePages responses, and production exception handling. Use this skill when requests mention Orchard Core Diagnostics, custom error page, status code pages, Error controller, HttpError shape, DiagnosticsStartupFilter, exception handler, or closely related Orchard Core implementation setup extension or troubleshooting work. Strong matches include work with OrchardCore.Diagnostics, IStartupFilter, UseExceptionHandler, UseStatusCodePagesWithReExecute, IConfigureOptions, HttpErrorShapeViewModel, HttpError__404, HttpError__NotFound, HttpError__TooManyRequests, SkipStatusCodePages, and IProblemDetailsService. It also helps with theme overrides, static-file behavior, and the source-backed patterns captured in this skill.
What it loads into context
Frontmatter
221 tokensAlways available to the agent
SKILL.md
1,834 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Enable Diagnostics
- Pipeline Behavior
- Override Error Shapes
- JSON Endpoints and Problem Details
- Add Application-Specific Error Options
- Test Error Pages
- Keep Error Responses Safe
- Route Considerations
Files
SKILL.mdcore8,394 bytes
Read SKILL.md
# Orchard Core Diagnostics
`OrchardCore.Diagnostics` wires tenant-aware error handling into the Orchard
Core pipeline. Its startup filter uses `/Error` for unhandled exceptions outside
development and re-executes status code responses at `/Error/{status}`. The
module maps the `Error/{status?}` route to `DiagnosticsController.Error`.
## Guidelines
- Enable the exact `OrchardCore.Diagnostics` feature before relying on its error route and shapes.
- In non-development environments it calls `UseExceptionHandler("/Error")`.
- It calls `UseStatusCodePagesWithReExecute("/Error/{0}")` for status responses.
- Do not expose exception details in theme templates or production error pages.
- Static-file paths are excluded from status page rendering when their extension maps to a content type.View the complete source on GitHuborchardcore-display-management
When your agent uses it
Skill for Orchard Core display management. Covers the driver, shape, placement and zone pipeline, choosing a display driver or placement, driver base classes (ContentPartDisplayDriver, ContentFieldDisplayDriver, SiteDisplayDriver, SectionDisplayDriver, DisplayDriver), GetDisplayShapeType, GetEditorShapeType, editor validation with Prefix, UseDisplayDriver, ForEditor and ForDisplayMode, ShapeResult helpers (Initialize, Factory, Dynamic, Copy, View, Combine), typed-state ValueTask initializers, shape table providers, display types, wrapper templates for DisplayDriver models, IShapeHtmlRenderer, shape debug information, rendering telemetry, and upgrading drivers from Orchard Core 3 (obsolete Shape method, Factory overrides). Use this skill when requests mention Orchard Core Display Management, display drivers, IDisplayResult, rendering a shape to an HTML string, or related troubleshooting. Strong matches include OrchardCore.DisplayManagement, OrchardCore.ContentManagement.Display, DisplayManagementDiagnostics.
What it loads into context
Frontmatter
223 tokensAlways available to the agent
SKILL.md
6,338 tokensWhen the skill is activated
Reference documents
1,394 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Mental Model
- Create Display Drivers and Shapes
- ShapeResult Helpers
- Render a Shape Outside of a View
- Gotchas
- Upgrading from 3.x
Files
SKILL.mdcore28,483 bytesSKILL.mdcore28,483 bytesSKILL.mdcore28,483 bytesSKILL.mdcore28,483 bytesreferences/display-management-examples.mddoc6,308 bytes
Read SKILL.md
# Orchard Core Display Management - Prompt Templates
## Mental Model
```text
model ──display drivers──▶ shapes ──placement──▶ zones ──templates (alternates)──▶ HTML
```
- **Shape**: a dynamic view model with a shape type and `Metadata` (alternates, wrappers, differentiator, placement). The shape type selects both the template and the placement rule.
- **Driver**: `Display`, `Edit`, and `UpdateAsync` return `IDisplayResult`s, each with a default `.Location(...)` per display type.
- **Placement**: `placement.json` at the root of a module or theme (or the admin Placements UI) overrides where a shape goes, whether it renders, and which template it uses.
- **Zone**: a named region of the root shape (`Content`, `Meta`, `Actions`, `Parts`, ...) or of the layout (`Header`, `Footer`, ...), or an editor group (tab, card, column).
### Driver or Placement?View the complete source on GitHuborchardcore-docker
When your agent uses it
Skill for containerizing Orchard Core with Docker. Covers multi-stage and multi-platform Dockerfiles, dockerignore configuration, docker compose with multiple database providers, persistent App_Data and temporary file volumes, configuring Orchard Core 4 through environment variables with the renamed configuration sections, scaling containers with shared media storage, data protection keys, Redis and SignalR backplanes, HTTPS in containers, non-root images, environment-specific targeting, image optimization, and CI/CD. Use this skill when requests mention Orchard Core Docker, containerizing Orchard Core, Dockerfile, Dockerfile-CI, TARGETOS, docker compose, container environment variables, ORCHARD_APP_DATA, temporary file storage in containers, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include OrchardCore.Cms.Web, OrchardCore.Cms.Web.dll, and docker-compose.yml.
What it loads into context
Frontmatter
203 tokensAlways available to the agent
SKILL.md
3,511 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Containerize Orchard Core with Docker
Files
SKILL.mdcore14,242 bytesSKILL.mdcore14,242 bytesSKILL.mdcore14,242 bytesSKILL.mdcore14,242 bytesSKILL.mdcore14,242 bytesSKILL.mdcore14,242 bytesSKILL.mdcore14,242 bytesSKILL.mdcore14,242 bytes
Read SKILL.md
# Orchard Core Docker - Prompt Templates
## Containerize Orchard Core with Docker
You are an Orchard Core expert. Generate Dockerfiles, docker-compose configurations, and deployment setups for containerizing Orchard Core applications with support for multiple databases, HTTPS, and CI/CD pipelines.
### Guidelines
- Use multi-stage builds to keep the final image small — build with the SDK image, run with the ASP.NET runtime image.
- Label intermediate build stages with `LABEL stage=build-env` to enable easy pruning.
- Always include a `.dockerignore` file to exclude `App_Data/`, `bin/`, and `obj/` directories.
- Use `docker-compose` to orchestrate Orchard Core with database services (SQL Server, MySQL, PostgreSQL).
- For HTTPS in containers, mount ASP.NET Core developer certificates or use production certificates.
- Prune intermediate images after building to reclaim disk space.View the complete source on GitHuborchardcore-dynamic-cache
When your agent uses it
Skill for configuring dynamic caching in Orchard Core. Covers shape-level caching, the dynamic-cache and cache-dependency Razor tag helpers, shape and menu tag helper cache attributes, Liquid cache blocks and shape cache arguments, cache dependencies, cache contexts (query, user, role, route, features), invalidation with ITagCache and ISignal, ShapeResult.Cache in display drivers, custom ICacheContextProvider, cache modes in General Settings, and the OrchardCore DynamicCache configuration section (FailoverRetryLatency). Use this skill when requests mention Orchard Core Dynamic Cache, Configure Dynamic Caching, Well-Known Cache Dependencies, Available Cache Contexts (Vary-By), Shape Tag Helper Attributes, or closely related Orchard Core implementation or troubleshooting work. Strong matches include OrchardCore.DynamicCache, OrchardCore.Environment.Cache, CacheContext, ITagCache, ISignal, IDynamicCache, IDynamicCacheService, IDistributedCache.
What it loads into context
Frontmatter
218 tokensAlways available to the agent
SKILL.md
2,929 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Dynamic Caching
Files
SKILL.mdcore12,487 bytes
Read SKILL.md
# Orchard Core Dynamic Cache - Prompt Templates
## Configure Dynamic Caching
You are an Orchard Core expert. Generate code and configuration for dynamic caching including shape-level caching, tag helpers, Liquid cache blocks, cache contexts, dependencies, variations, invalidation, and performance optimization. For response compression, distributed cache providers, and cache-control/response headers, see `orchardcore-caching`.
### Guidelines
- Enable `OrchardCore.DynamicCache` for shape-level output caching with dependency tracking.
- Dynamic Cache caches rendered HTML markup at the shape level, not at the page level.
- Cached sections can be nested; each section can have its own cache policy.
- Cached values are stored via `IDynamicCache`, backed by `IDistributedCache` (defaults to `IMemoryCache`).
- The Razor `<dynamic-cache>` tag helper defaults to a 30-second sliding window when no expiration is set. Programmatic and Liquid cache entries use the dynamic-cache service default.
- Invalidating a child cache block also invalidates all parent blocks.View the complete source on GitHuborchardcore-elasticsearch
When your agent uses it
Skill for configuring Elasticsearch in Orchard Core. Covers Elasticsearch setup and Docker deployment, connection configuration in the OrchardCore Search Elasticsearch section (formerly OrchardCore_Elasticsearch), analyzers and token filters, index creation recipe steps, queries, comparison with Lucene, field mapping, custom data indexing, ElasticsearchPermissions, admin action authorization, and upgrading from GetElasticIndexPermission to IndexingPermissions.CreateDynamicPermission. Use this skill when requests mention Orchard Core Elasticsearch, Configure Elasticsearch, Enabling Elasticsearch Features, Elasticsearch Connection Configuration, Docker Deployment, Creating an Elasticsearch Index Profile, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.Elasticsearch, OrchardCore.Search.Elasticsearch.Worker, OrchardCore.Search, OrchardCore.Indexing, ManageElasticIndexes, QueryElasticApi.
What it loads into context
Frontmatter
194 tokensAlways available to the agent
SKILL.md
3,166 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Elasticsearch
Files
SKILL.mdcore13,789 bytesSKILL.mdcore13,789 bytes
Read SKILL.md
# Orchard Core Elasticsearch - Prompt Templates
## Configure Elasticsearch
You are an Orchard Core expert. Generate code and configuration for Elasticsearch-based search in Orchard Core.
### Guidelines
- Enable `OrchardCore.Elasticsearch` to manage Elasticsearch indices.
- Configure the Elasticsearch connection in `appsettings.json` under the `OrchardCore:Search:Elasticsearch` section (Orchard Core 4.0; the former `OrchardCore_Elasticsearch` section is deprecated but still read). The connection can be configured globally or per tenant.
- Use the `CreateOrUpdateIndexProfile` recipe step to create indexes (preferred over the obsolete `ElasticIndexSettings` step).
- Use the `ResetIndex` recipe step to restart indexing without deleting entries (preferred over the obsolete `elastic-index-reset` step).
- Use the `RebuildIndex` recipe step to delete and recreate indexes (preferred over the obsolete `elastic-index-rebuild` step).
- Elasticsearch uses the Elasticsearch Query DSL for queries.View the complete source on GitHuborchardcore-email
When your agent uses it
Guidance for configuring and sending email in Orchard Core with the OrchardCore.Email module, SMTP or Azure Communication Services providers, IEmailService, MailMessage, Result, Liquid templates, the Email Task workflow activity, recipes, provider selection, the OrchardCore Email configuration section, IOptionsMonitor EmailOptions and EmailProviderOptions, custom IEmailProvider implementations, and EmailPermissions. Use this skill when requests mention OrchardCore.Email Module, Email Providers, Configuring SMTP Settings, Via Admin UI, Via Recipe, Via Configuration Provider, OrchardCore Email Smtp or Email Azure configuration, custom email provider, AddEmailProvider, AddEmailProviderOptionsConfiguration, IOptionsUpdateNotifier, ISmtpService migration, MailKitSmtpService migration, upgrading email code to Orchard Core 4, or closely related Orchard Core implementation, setup, extension, or troubleshooting work.
What it loads into context
Frontmatter
201 tokensAlways available to the agent
SKILL.md
2,497 tokensWhen the skill is activated
Reference documents
1,562 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Enable and Configure SMTP
- Configuration-backed Providers
- Enable Azure Communication Services
- Sending Email Programmatically
- Reading Email Options
- Custom Email Providers
- Liquid Templates
- Email Events
- Workflows
- Upgrading from 3.x
Files
SKILL.mdcore10,842 bytesreferences/email-examples.mddoc7,448 bytes
Read SKILL.md
# OrchardCore.Email Module
`OrchardCore.Email` supplies the provider-neutral email API. Enable an email
provider and configure one enabled provider as the default before application
code sends mail.
| Provider module | Tenant provider technical name | Configuration-backed default |
|---|---|---|
| `OrchardCore.Email.Smtp` | `SMTP` | `DefaultSMTP` (section `OrchardCore:Email:Smtp`) |
| `OrchardCore.Email.Azure` | `Azure` | `DefaultAzure` (section `OrchardCore:Email:Azure`) |
The email settings page is **Settings → Communication → Email**. It lists
enabled providers and selects `EmailSettings.DefaultProviderName`. Enabling the
last valid tenant provider selects it automatically; otherwise explicitlyView the complete source on GitHuborchardcore-email-azure
When your agent uses it
Skill for configuring Azure Communication Services email delivery in Orchard Core. Covers AzureEmailSettings, AzureEmailOptions, DefaultAzureEmailOptions, AzureEmailProvider, DefaultAzureEmailProvider, the generic AzureEmailProviderBase, the OrchardCore Email Azure configuration section, IOptionsMonitor refresh, encrypted connection strings, provider selection, recipes, IEmailService, and configuration overrides. Use this skill when requests mention Orchard Core Azure Email, Azure Communication Services Email, AzureEmailSettings, AzureEmailProvider, DefaultAzureEmailOptions, DefaultAzure, ACS email provider, custom Azure email provider, upgrading Azure email code to Orchard Core 4, or closely related Orchard Core implementation setup extension or troubleshooting work.
What it loads into context
Frontmatter
170 tokensAlways available to the agent
SKILL.md
1,322 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configuration-backed Provider (`DefaultAzure`)
- Tenant Provider (`Azure`)
- Send With IEmailService
- Runtime Updates and Custom Providers
- Upgrading from 3.x
Files
SKILL.mdcore6,159 bytesSKILL.mdcore6,159 bytes
Read SKILL.md
# Orchard Core Azure Communication Services Email
`OrchardCore.Email.Azure` provides Azure Communication Services (ACS) delivery
on top of the provider-neutral `OrchardCore.Email` API (see
`orchardcore-email`).
- The tenant provider is `AzureEmailProvider`, technical name `Azure`, edited
on the **Azure Communication Services** tab of **Settings → Communication →
Email**.
- The configuration-backed provider is `DefaultAzureEmailProvider`, technical
name `DefaultAzure`, bound from `OrchardCore:Email:Azure`.
- Application code sends through `IEmailService` and can therefore remain
independent of the chosen provider.
View the complete source on GitHuborchardcore-email-smtp
When your agent uses it
Skill for configuring SMTP email delivery in Orchard Core. Covers SmtpSettings, SmtpOptions, DefaultSmtpOptions, SmtpEmailProvider, DefaultSmtpEmailProvider, SmtpEmailProviderBase, the OrchardCore Email Smtp configuration section, pickup directories and PickupDirectoryLocationBase, encryption methods, proxies, provider selection, recipes, IOptionsMonitor refresh, IEmailService, and legacy ISmtpService migration. Use this skill when requests mention Orchard Core SMTP Email, SmtpSettings, SmtpEmailProvider, SMTP configuration, MailKit email provider, pickup directory, DefaultSmtpOptions, DefaultSMTP, custom SMTP provider, upgrading SMTP code to Orchard Core 4, or closely related Orchard Core implementation setup extension or troubleshooting work.
What it loads into context
Frontmatter
183 tokensAlways available to the agent
SKILL.md
1,709 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Tenant Provider (`SMTP`)
- Configuration-backed Provider (`DefaultSMTP`)
- Pickup Directory Delivery
- Sending
- Options and Custom SMTP Providers
- Upgrading from 3.x
Files
SKILL.mdcore7,338 bytes
Read SKILL.md
# Orchard Core SMTP Email Provider
`OrchardCore.Email.Smtp` supplies the tenant `SMTP` provider and the
configuration-backed `DefaultSMTP` provider, both built on MailKit.
Application code uses `IEmailService` (see `orchardcore-email`), not an
SMTP-specific service.
## Tenant Provider (`SMTP`)
Enable the module and configure the **SMTP** tab of **Settings → Communication
→ Email**. Select the enabled SMTP provider as the email default when more than
one provider is enabled; enabling the only provider selects it automatically.
```jsonView the complete source on GitHuborchardcore-facebook
When your agent uses it
Skill for configuring Facebook and Meta integrations in Orchard Core. Covers Meta App core components, Meta Login authentication, Social Plugins widgets and their ManageLiquidTemplates protection, Meta Pixel tracking, the Meta Conversions API and its workflow task, FacebookCoreSettings, FacebookLoginSettings, and FacebookPixelSettings recipes, and ConfigureFacebookSettings with the OrchardCore Facebook configuration section and AppSecret from configuration. Use this skill when requests mention Orchard Core Facebook/Meta Integration, Meta App Settings, Meta Login, Meta Social Plugins Widgets, Meta Pixel, Conversions API, server-side Meta events, or closely related Orchard Core implementation, setup, extension, upgrade, or troubleshooting work. Strong matches include OrchardCore.Facebook, OrchardCore.Facebook.Login, OrchardCore.Facebook.Widgets, OrchardCore.Facebook.Pixel, FacebookSettings, and FacebookPluginPart.
What it loads into context
Frontmatter
198 tokensAlways available to the agent
SKILL.md
1,548 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Meta App Settings
- Configuration Overrides
- Meta Login
- Social Plugins Widgets
- Meta Pixel and Conversions API
- Upgrading from 3.x
Files
SKILL.mdcore6,598 bytes
Read SKILL.md
# Orchard Core Facebook and Meta Integration
`OrchardCore.Facebook` is the Meta core feature. It is
`EnabledByDependencyOnly`; do not try to enable it directly. Enable a
dependent feature instead:
| Feature ID | Purpose |
|---|---|
| `OrchardCore.Facebook.Login` | External Meta authentication |
| `OrchardCore.Facebook.Widgets` | Meta social-plugin widgets |
| `OrchardCore.Facebook.Pixel` | Meta Pixel tracking and the Conversions API |
The Login and Widgets features bring in the core feature. Pixel is independent.
View the complete source on GitHuborchardcore-features
When your agent uses it
Explains OrchardCore feature management including enabling and disabling features, the Features admin list with bulk Enable and Disable actions, programmatic control with IShellFeaturesManager and UpdateFeaturesAsync, dependencies, manifest declarations, recipe activation, the AllFeatures deployment step, and feature guards. Covers FeatureAttribute (including EnabledByDependencyOnly) versus RequireFeaturesAttribute gating, composing a startup for every tenant with RequiredStartupAttribute, and contributing features with IFeaturesProvider. Use this skill when requests mention OrchardCore Features, Feature Management from the Admin Dashboard, Programmatic Feature Control with IShellFeaturesManager, Enabling and Disabling Features, FeatureAttribute vs RequireFeaturesAttribute, EnabledByDependencyOnly, [Feature], [RequireFeatures] or [RequiredStartup] on a Startup class, FeaturesBulkAction, FeaturesPermissions, theme features, or closely related Orchard Core setup, extension, or troubleshooting work.
What it loads into context
Frontmatter
209 tokensAlways available to the agent
SKILL.md
2,155 tokensWhen the skill is activated
Reference documents
347 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Features Admin List
- Query and Update Features
- Declare a Feature vs. Gate on a Feature
- Manifest Declarations
- Export Features with a Deployment Plan
- Recipe Activation
- Upgrading from 3.x
Files
SKILL.mdcore10,283 bytesreferences/features-examples.mddoc1,489 bytes
Read SKILL.md
# OrchardCore Features
Features are enabled per tenant. Manage them at **Configuration → Features** or
through `IShellFeaturesManager`. Resolve IDs from the module manifest rather
than inferring them from an assembly or package name.
## Features Admin List
- Requires the `ManageFeatures` permission (`OrchardCore.Features.FeaturesPermissions.ManageFeatures`), granted to `Administrator` by default.
- Enabling a feature also enables its dependencies; disabling a feature also disables the features that depend on it. Always-enabled features cannot be turned off.
- Select several features and use **Actions** → **Enable** or **Disable** for bulk changes. The `FeaturesBulkAction` enum has `None`, `Enable`, and `Disable`.
- The list renders one `AdminList` per category, all named `Features` (`FeaturesAdminList.Name`), so it follows the site's List/Grid layout (see `orchardcore-admin-lists`).
- Extra `[Feature]` attributes declared in a theme's manifest alongside `[Theme]` are listed with their category and an **Enable** button.
View the complete source on GitHuborchardcore-feeds
When your agent uses it
Skill for exposing Orchard Core content through extensible XML feeds. Covers RSS feed selection, the list RSS route and auto-discovery link, IFeedQueryProvider and IFeedQuery implementations, IFeedItemBuilder population, FeedContext response construction and contextualizers, Lists feed metadata, custom feed routes, and custom feed format builders such as Atom. Use this skill when requests mention Orchard Core Feeds, RSS feeds, Atom feeds, IFeedItemBuilder, feed queries, list feeds, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.Feeds, OrchardCore.Feeds.Core, AddFeeds, IFeedBuilder, IFeedBuilderProvider, IFeedQueryProvider, IFeedQuery, IFeedItemBuilder, FeedContext, FeedMetadata, CommonFeedItemBuilder, and ListFeedQuery. It also helps with feature recipes, RSS URLs, custom format providers, and the code patterns captured in this skill.
What it loads into context
Frontmatter
226 tokensAlways available to the agent
SKILL.md
2,401 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Build Extensible Content Feeds
Files
SKILL.mdcore10,550 bytesSKILL.mdcore10,550 bytes
Read SKILL.md
# Orchard Core Feeds - Prompt Templates
## Build Extensible Content Feeds
You are an Orchard Core expert. Generate feed configuration and provider code using the Orchard Core feeds abstractions.
### Guidelines
- Enable the `OrchardCore.Feeds` feature. The module has no declared feature dependencies and exposes no feed on its own; other modules (most commonly Lists) describe what to syndicate.
- `services.AddFeeds()` (in `OrchardCore.Feeds.Core`) registers the RSS 2.0 builder for the `rss` format. There is no built-in Atom provider.
- Use `IFeedQueryProvider` to match a request and `IFeedQuery` to add source items and channel metadata to `FeedContext`.
- `FeedController` resolves a single `IFeedItemBuilder` (the last registered one). `OrchardCore.Contents` registers `CommonFeedItemBuilder` for `ContentItem` feed items; registering your own `IFeedItemBuilder` replaces it, so only do that deliberately.
- Providers return a priority. The controller selects the matching format provider and query provider with the highest priority (built-in RSS and list query use `-5`). If either is missing, the controller returns `404`.
- `FeedController.Index(string format)` is in the `OrchardCore.Feeds` area; the format comes from the route or the `format` query value. The response is `text/xml`.View the complete source on GitHuborchardcore-file-upload-security
When your agent uses it
Skill for securing user-uploaded files in Orchard Core 4.0 with the file upload security pipeline. Covers FileCreationService CreateAsync and CreatedAsync, aborting when FileCreatingResult Succeeded is false, stream ownership and leaveOpen, FileCreatingContext, custom IFileEventHandler checks for extensions, content types or file signatures, handler registration, which features register FileCreationService, the IMediaFileStore CreateFileFromStreamAsync overload taking a FileCreationService, and how Media API uploads, the media recipe step, TUS, deployment imports and XML-RPC use the pipeline. Use this skill when requests mention Orchard Core file upload security, validating, scanning or rejecting uploads, custom upload endpoints, or closely related implementation or troubleshooting work. Strong matches include OrchardCore.FileStorage, FileCreationService, FileCreatingContext, FileCreatingResult, IFileEventHandler, MediaFileStoreExtensions, IMediaFileStore, and FileStoreException.
What it loads into context
Frontmatter
224 tokensAlways available to the agent
SKILL.md
3,513 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Run Uploads Through the Pre-Storage Pipeline
Files
SKILL.mdcore16,634 bytes
Read SKILL.md
# Orchard Core File Upload Security - Prompt Templates
## Run Uploads Through the Pre-Storage Pipeline
You are an Orchard Core expert. Generate code that runs every user-uploaded file through Orchard Core's file upload security pipeline before it is stored permanently, and handlers that inspect or reject those files.
### Guidelines
- `FileCreationService` (namespace `OrchardCore.FileStorage`, package `OrchardCore.FileStorage.Abstractions`) calls every registered `IFileEventHandler.CreatingAsync()` before a file is written, and `CreatedAsync()` after it was stored.
- Call `CreateAsync()` before any permanent write. When the returned `FileCreatingResult.Succeeded` is `false`, abort and do not store the file. Never save first and scan afterwards.
- Store `result.Stream`, not the original upload stream: a handler may have replaced it.
- Call `CreatedAsync()` only after the file was stored successfully, with the stored entry.
- Dispose the result with `await using`, whether it succeeded or failed, and keep it alive while you read `result.Stream`.
- Handlers can also throw (the ClamAV scanner throws `AntivirusScanningException`, a `FileStoreException`, when it cannot scan). Treat an exception as a rejected upload.View the complete source on GitHuborchardcore-flow-bagpart
When your agent uses it
Skill for building page layouts with FlowPart and BagPart in Orchard Core. Covers flow widgets, BagPart for named containers, Blocks Editor configuration with categories and thumbnails, content type setup, Liquid and Razor templating, safe rendering of nested HTML, ManageLiquidTemplates for nested Liquid widgets, ES module editors for items added by the Flow and Bag editors, shape alternates, and layout building patterns. Use this skill when requests mention Orchard Core Flow & BagPart, Building Layouts with FlowPart and BagPart, Enabling Flow Features, Creating a Content Type with FlowPart, Creating a Content Type with Named BagParts, Enabling the Blocks Editor or closely related Orchard Core work. Strong matches include work with OrchardCore.Flows, OrchardCore.Widgets, OrchardCore.Flows.ViewModels, FlowPart, BagPart, DataMigration, IContentDefinitionManager, WithPart, TitlePart.
What it loads into context
Frontmatter
214 tokensAlways available to the agent
SKILL.md
2,818 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Building Layouts with FlowPart and BagPart
Files
SKILL.mdcore12,893 bytes
Read SKILL.md
# Orchard Core Flow & BagPart - Prompt Templates
## Building Layouts with FlowPart and BagPart
You are an Orchard Core expert. Generate code and configuration for composing page layouts using FlowPart and BagPart.
### Guidelines
- FlowPart and BagPart are provided by the `OrchardCore.Flows` module.
- **FlowPart** allows embedding arbitrary widget content items inline within a content item (e.g., a page).
- **BagPart** is similar but lets you restrict which content types (`ContainedContentTypes`) or stereotypes (`ContainedStereotypes`) can be contained within it via its settings.
- `FlowPartSettings` exposes `ContainedContentTypes`, `CollapseContainedItems`, and `DefaultAlignment`; `BagPartSettings` exposes `ContainedContentTypes`, `ContainedStereotypes`, `DisplayType`, and `CollapseContainedItems`.
- BagPart can be added as a **named part**, allowing multiple BagParts on a single content type (e.g., `Services`, `Portfolio`, `About`).
- BagPart items are stored as a single document in the database for efficient retrieval.View the complete source on GitHuborchardcore-forms
When your agent uses it
Skill for building and managing forms in Orchard Core with OrchardCore.Forms. Covers Form, Input, Select, TextArea, Label, Button, Validation, ValidationSummary, and ReCaptcha widgets, FormPart, FormElementPart, FormInputElementPart, conditional visibility rules with FormInputElementVisibilityPart, HTTP workflows, Fork and Join validation, Send Email with Request.Form values, anti-forgery, model state round-tripping, and custom form elements. Use this skill when requests mention Orchard Core Forms, Create and Configure Forms, Enabling the Forms Feature, Form Widget Content Types, Form Content Type Settings, Input Element Configuration, or closely related Orchard Core implementation, setup, extension, or troubleshooting work.
What it loads into context
Frontmatter
175 tokensAlways available to the agent
SKILL.md
1,678 tokensWhen the skill is activated
Reference documents
500 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Enable Forms
- Form Element Content
- Conditional Visibility
- Workflow Submission and Validation
- Custom Form Elements
Files
SKILL.mdcore6,832 bytesreferences/forms-examples.mddoc2,230 bytes
Read SKILL.md
# Orchard Core Forms
Enable `OrchardCore.Forms` and use its widget types inside a `FlowPart`.
`Form` contains `FormElementPart`, `FormPart`, and `FlowPart`. `Input`,
`Select`, and `TextArea` each contain `FormInputElementPart`,
`FormElementPart`, `FormElementLabelPart`, their specific element part,
`FormElementValidationPart`, and `FormInputElementVisibilityPart`.
| Part | Current responsibility |
|---|---|
| `FormPart` | `Action`, `Method`, `WorkflowTypeId`, `EncType`, anti-forgery, and form-location behavior |
| `FormElementPart` | Element `Id` |
| `FormInputElementPart` | Submitted field `Name` |
| `InputPart` | Input `Type`, `DefaultValue`, and `Placeholder` |View the complete source on GitHuborchardcore-github-authentication
When your agent uses it
Skill for configuring GitHub OAuth authentication in Orchard Core. Covers GitHub external login settings, OAuth callback paths, the GitHubAuthenticationSettings recipe step with ConsumerKey and ConsumerSecret, the generic Settings step, ConfigureGitHubSettings with the OrchardCore Authentication GitHub configuration section, ExternalAuthentication dependencies, and user registration behavior. Use this skill when requests mention Orchard Core GitHub Authentication, GitHub OAuth, sign in with GitHub, GitHubAuthenticationSettings, ConfigureGitHubSettings, GitHub callback URL, or closely related Orchard Core implementation setup extension upgrade or troubleshooting work.
What it loads into context
Frontmatter
150 tokensAlways available to the agent
SKILL.md
833 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Recipe Steps
- Configuration Overrides
- Upgrading from 3.x
Files
SKILL.mdcore3,715 bytes
Read SKILL.md
# Orchard Core GitHub Authentication
Enable `OrchardCore.GitHub.Authentication`; it depends on
`OrchardCore.Users.ExternalAuthentication`. Configure it at
**Settings → Security → Authentication → GitHub**.
The persisted `GitHubAuthenticationSettings` properties are `ClientID`,
`ClientSecret`, `CallbackPath`, and `SaveTokens`. The default callback path is
`/signin-github`. Register the tenant's full HTTPS callback URL as the
Authorization callback URL of the GitHub OAuth App.
The integration uses the `AspNet.Security.OAuth.GitHub` package
(`GitHubAuthenticationDefaults`, `GitHubAuthenticationOptions`,
`GitHubAuthenticationHandler`). The old `GithubDefault`, `GithubOptions`,View the complete source on GitHuborchardcore-google
When your agent uses it
Skill for configuring Google integrations in Orchard Core. Covers Google Analytics, Google Tag Manager, Google Authentication, credentials configuration, current feature IDs, current admin paths, generic Settings recipes, ConfigureGoogleSettings with the OrchardCore Authentication Google configuration section, ClientSecret from configuration or environment variables, and Google permissions. Use this skill when requests mention Orchard Core Google Integration, Google Analytics, Google Analytics Settings, Google Tag Manager, Google Tag Manager Settings, Google Authentication, sign in with Google, GoogleAuthenticationSettings, or closely related Orchard Core implementation, setup, extension, upgrade, or troubleshooting work.
What it loads into context
Frontmatter
148 tokensAlways available to the agent
SKILL.md
923 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configuration Overrides
- Permissions
- Upgrading from 3.x
Files
SKILL.mdcore4,230 bytes
Read SKILL.md
# Orchard Core Google Integration
The Google module has these feature IDs:
| Feature | ID | Current admin path |
|---|---|---|
| Google Analytics | `OrchardCore.Google.Analytics` | **Settings → Integrations → Google Analytics** |
| Google Tag Manager | `OrchardCore.Google.TagManager` | **Settings → Integrations → Google Tag Manager** |
| Google authentication | `OrchardCore.Google.GoogleAuthentication` | **Settings → Security → Authentication → Google** |
Google authentication depends on
`OrchardCore.Users.ExternalAuthentication`. Create an OAuth client (web
application) in the Google Cloud Console and register the callback URL; its
default path is `/signin-google` under the tenant. Google+ is not an OrchardView the complete source on GitHuborchardcore-graphql
When your agent uses it
Skill for configuring and using the GraphQL API in Orchard Core. Covers GraphQL queries, custom graph types, content querying, IIndexAliasProvider, AddWhereInputIndexPropertyProvider, where filters, GraphQLPermissions, named query permissions, RequirePermission on fields, the OrchardCore Apis GraphQL configuration section, GraphQLContentOptions, and rate limiting. Use this skill when requests mention Orchard Core GraphQL, Configure and Use GraphQL API, Enabling GraphQL Features, Basic Content Query, Query with Filtering, Query with Pagination, or closely related Orchard Core implementation, setup, extension, or troubleshooting work.
What it loads into context
Frontmatter
157 tokensAlways available to the agent
SKILL.md
1,595 tokensWhen the skill is activated
Reference documents
217 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Permissions
- Configuration
- Rate Limiting and Rendered HTML
- Graph Types and Where Filters
- Index Aliases
- Upgrading from 3.x
Files
SKILL.mdcore6,771 bytesreferences/graphql-examples.mddoc1,018 bytes
Read SKILL.md
# Orchard Core GraphQL
Enable `OrchardCore.Apis.GraphQL` for `/api/graphql` (GET with `query`/`variables`/`operationName`, or POST with `application/json` or `application/graphql`). Use **GraphiQL** in the admin to inspect the generated schema and field names. Do not invent a Liquid `graphql` tag; execute GraphQL through the HTTP endpoint or application code.
```json
{
"steps": [
{
"name": "feature",
"enable": [
"OrchardCore.Apis.GraphQL"
]
}
]View the complete source on GitHuborchardcore-health-checks
When your agent uses it
Skill for exposing and extending Orchard Core tenant health checks. Covers HealthChecksOptions, the OrchardCore HealthChecks configuration section, health endpoint configuration, compact and detailed status codes, rate limiting probes, IHealthCheck registration, detailed JSON responses, IHealthChecksResponseWriter customization, and ASP.NET Core health check integration. Use this skill when requests mention Orchard Core Health Checks, health endpoints, liveness probes, IHealthCheck, HealthChecksOptions, Kubernetes probes, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.HealthChecks, HealthChecksOptions, IHealthChecksResponseWriter, DefaultHealthChecksResponseWriter, HealthCheckOptions, HealthReport, and Microsoft.Extensions.Diagnostics.HealthChecks. It also helps with feature recipes, tenant configuration, custom checks, and the code patterns captured in this skill.
What it loads into context
Frontmatter
203 tokensAlways available to the agent
SKILL.md
1,857 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Expose Tenant Health Checks
Files
SKILL.mdcore8,794 bytesSKILL.mdcore8,794 bytes
Read SKILL.md
# Orchard Core Health Checks - Prompt Templates
## Expose Tenant Health Checks
You are an Orchard Core expert. Generate health endpoint configuration and ASP.NET Core health check integrations for Orchard Core.
### Guidelines
- Enable the `OrchardCore.HealthChecks` feature. The module has no declared feature dependencies.
- The feature registers ASP.NET Core health check services with `services.AddHealthChecks()`.
- By default, the health endpoint is `/health/live`, relative to the tenant host and URL prefix. Configure it per tenant through the `OrchardCore:HealthChecks` configuration section (formerly `OrchardCore_HealthChecks`).
- The feature has no admin UI or site settings, and it registers no check itself. With no checks registered, the endpoint reports `Healthy`. `OrchardCore.Redis` and `OrchardCore.Sms` contribute checks when they are enabled with Health Checks.
- The endpoint does not require authentication and runs every registered check; the module does not filter by tag.
- Set `ShowDetails` to `false` for a minimal standard health response. Set it to `true` only for protected operational endpoints that may expose dependency information.View the complete source on GitHuborchardcore-html
When your agent uses it
Skill for using HtmlBodyPart in Orchard Core. Covers HTML content editing, Liquid and Razor shape templates, HtmlBodyPartViewModel, HtmlBodyPartSettings, source persistence and final-output HTML sanitization, shortcodes, IHtmlDisplayService, Default, Wysiwyg, Trumbowyg and Monaco editors, custom editors, and migrating away from RenderLiquid. Use this skill when requests mention Orchard Core HTML Body, Use HtmlBodyPart for Rich Content Editing, Enabling HTML Body, Attaching HtmlBodyPart to a Content Type, Shapes, HtmlBodyPartViewModel Properties, SanitizeHtml, RenderLiquid removed, or closely related Orchard Core implementation, setup, extension, or troubleshooting work.
What it loads into context
Frontmatter
174 tokensAlways available to the agent
SKILL.md
1,373 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Rendering Pipeline
- Shapes
- Editors
- Rendering HTML in Custom Code
- Upgrading from 3.x
Files
SKILL.mdcore5,487 bytesSKILL.mdcore5,487 bytesSKILL.mdcore5,487 bytesSKILL.mdcore5,487 bytesSKILL.mdcore5,487 bytes
Read SKILL.md
# Orchard Core HTML Body
Enable `OrchardCore.Html` and attach `HtmlBodyPart` to a content type. The
part stores the authored source in `HtmlBodyPart.Html`; it has no `Body`
property.
```csharp
await _contentDefinitionManager.AlterTypeDefinitionAsync("Article", type => type
.Creatable()
.WithPart("TitlePart", part => part.WithPosition("0"))
.WithPart("HtmlBodyPart", part => part
.WithPosition("1")
.WithEditor("Wysiwyg")
.WithSettings(new HtmlBodyPartSettingsView the complete source on GitHuborchardcore-https
When your agent uses it
Skill for enforcing HTTPS and HSTS per Orchard Core tenant. Covers HttpsSettings, IHttpsService, HTTPS redirection, permanent redirect status, SSL port selection, HSTS modes, admin settings, the settings recipe step, reverse proxy TLS termination, and deployment. Use this skill when requests mention Orchard Core HTTPS, HttpsSettings, RequireHttps, HSTS, HTTPS redirection, strict transport security, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.Https, HttpsSettings, IHttpsService, HttpsService, HttpStrictTransportSecurityMode, HttpsSettingsDisplayDriver, HttpsRedirectionOptions, and AddHsts. It also helps with feature recipes, proxy considerations, migrations, and the code patterns captured in this skill.
What it loads into context
Frontmatter
196 tokensAlways available to the agent
SKILL.md
1,465 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Enforce HTTPS and HSTS
Files
SKILL.mdcore6,686 bytes
Read SKILL.md
# Orchard Core HTTPS - Prompt Templates
## Enforce HTTPS and HSTS
You are an Orchard Core expert. Generate safe tenant-specific HTTPS configuration for Orchard Core.
### Guidelines
- Enable the `OrchardCore.Https` feature. The module has no declared feature dependencies.
- Configure the setting only over an HTTPS request. The settings driver prevents changes over HTTP for safety.
- `RequireHttps` enables ASP.NET Core `UseHttpsRedirection`.
- `RequireHttpsPermanent` changes the redirect result to `308 Permanent Redirect`; otherwise ASP.NET Core uses its normal redirect behavior.
- `SslPort` supplies the HTTPS port when it cannot be inferred by the host.
- `StrictTransportSecurityMode` controls `UseHsts`: `Disabled`, `Enabled`, or `FromConfiguration`.View the complete source on GitHuborchardcore-indexing
When your agent uses it
Skill for the Orchard Core indexing infrastructure. Covers how content items reach an index (immediate deferred indexing and the task log processed by the Indexing Worker), content part, field and document index handler contracts, DocumentIndex value types and DocumentIndexOptions, IIndexProfileManager for managing index profiles from code, custom indexing sources and provider keyed services, recipe and deployment steps for index management, obsolete provider-specific steps, reset and rebuild, IndexingPermissions and dynamic per-index permissions, and the indexing UI. Use this skill when requests mention Orchard Core Indexing, index profiles, Content Index Metadata, index handlers, or related troubleshooting. Strong matches include OrchardCore.Indexing, OrchardCore.Indexing.Worker, CreateOrUpdateIndexProfile, ResetIndex, RebuildIndex, IIndexManager, IDocumentIndexManager, IIndexNameProvider, IIndexProfileManager, ContentPartIndexHandler, ContentFieldIndexHandler, IndexingPermissions.
What it loads into context
Frontmatter
220 tokensAlways available to the agent
SKILL.md
4,051 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Indexing Infrastructure
Files
SKILL.mdcore18,677 bytesSKILL.mdcore18,677 bytesSKILL.mdcore18,677 bytesSKILL.mdcore18,677 bytesSKILL.mdcore18,677 bytesSKILL.mdcore18,677 bytesSKILL.mdcore18,677 bytes
Read SKILL.md
# Orchard Core Indexing Infrastructure - Prompt Templates
## Configure Indexing Infrastructure
You are an Orchard Core expert. Generate code and configuration for the Orchard Core indexing infrastructure, including custom indexing sources and index lifecycle management.
### Guidelines
- Enable `OrchardCore.Indexing` as the core indexing module that provides the abstraction layer for all index providers.
- The indexing module is provider-agnostic and supports Lucene, Elasticsearch, and Azure AI Search.
- The module maintains an append-only log of indexing tasks (Update or Delete) using a cursor-based interface.
- Content item indexing is a consumer of the core indexing infrastructure, not a hard requirement.
- Custom data sources (REST APIs, databases, in-memory structures) can be indexed alongside content items.
- Use the `CreateOrUpdateIndexProfile` recipe step to create or update index profiles.View the complete source on GitHuborchardcore-indexing-sources
When your agent uses it
Skill for registering Orchard Core indexing sources for search providers. Covers AddIndexingSource wrappers, AddLuceneIndexingSource, AddElasticsearchIndexingSource, AddAzureAISearchIndexingSource, OrchardCore.Contents integration, source metadata, options-gated registration, current index manager contracts, indexing task categories with IIndexingTaskManager, first-registration-wins keyed provider managers, end-to-end custom record indexing with NamedIndexingService, IDocumentIndexHandler, a background task and an IndexProfileHandlerBase for sync and reset, and how indexing sources differ from the data sources of data pipelines. Use this skill when requests mention Orchard Core Indexing Sources, AddElasticsearchIndexingSource, AddAzureAISearchIndexingSource, Register a new indexing source, indexing custom records, NamedIndexingService, or closely related Orchard Core implementation, setup, or troubleshooting work.
What it loads into context
Frontmatter
212 tokensAlways available to the agent
SKILL.md
2,713 tokensWhen the skill is activated
Reference documents
491 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Elasticsearch Content Source
- Custom Providers
- Registration Rules
- Custom Record Source End to End
- Indexing Sources vs Data Sources
- Provider Connection Settings
Files
SKILL.mdcore13,236 bytesSKILL.mdcore13,236 bytesSKILL.mdcore13,236 bytesSKILL.mdcore13,236 bytesSKILL.mdcore13,236 bytesSKILL.mdcore13,236 bytesSKILL.mdcore13,236 bytesSKILL.mdcore13,236 bytesSKILL.mdcore13,236 bytesSKILL.mdcore13,236 bytesSKILL.mdcore13,236 bytesreferences/indexing-source-examples.mddoc2,265 bytes
Read SKILL.md
# Orchard Core Indexing Sources
An indexing source registers provider-specific index, document-index, and
index-name managers together with source metadata for the index-profile UI.
Use the provider's real wrapper when one exists.
## Elasticsearch Content Source
Orchard Core's Elasticsearch provider exposes
`AddElasticsearchIndexingSource`. Its content startup registers the source
with `IndexingConstants.ContentsIndexSource`:
```csharp
using Microsoft.Extensions.DependencyInjection;View the complete source on GitHuborchardcore-layers
When your agent uses it
Skill for configuring layers in Orchard Core. Covers layer creation, layer rules and conditions, zone-based widget visibility, the Layers and LayerSettings recipe steps, JavaScript condition methods, validation, isolation and cancellation, URL rule expressions, the ManageLayers permission, and conditional content display. Use this skill when requests mention Orchard Core Layers, Configuring Layers for Conditional Widget Display, Enabling Layer Features, Available Conditions, Common Layer Patterns, Declaring Zones in Themes, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.Layers, OrchardCore.Widgets, OrchardCore.Rules, OrchardCore.Scripting, LayerRule, HtmlWidget, HtmlBodyPart, BeforeContent, AfterContent, Widget. It also helps with Common Layer Patterns, Declaring Zones in Themes, Configuring Zones, plus the code patterns, admin flows, recipe steps, and referenced examples captured in this skill.
What it loads into context
Frontmatter
220 tokensAlways available to the agent
SKILL.md
2,417 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configuring Layers for Conditional Widget Display
Files
SKILL.mdcore11,292 bytes
Read SKILL.md
# Orchard Core Layers - Prompt Templates
## Configuring Layers for Conditional Widget Display
You are an Orchard Core expert. Generate configuration and code for managing layers and conditional widget visibility in Orchard Core.
### Guidelines
- Layers are provided by the `OrchardCore.Layers` module and control when widgets are displayed in theme zones.
- A Layer has a name, description, and one or more **conditions** (rules) that determine when its widgets are visible.
- Widgets placed in a zone must be associated with a Layer; the widget renders only when the Layer's rules evaluate to `true`.
- Layers are managed from **Design > Widgets** in the admin panel.
- Available zones are configured in **Design > Settings > Zones** and must match theme layout sections.
- Conditions can be combined using `All` (AND) and `Any` (OR) condition groups.View the complete source on GitHuborchardcore-liquid
When your agent uses it
Skill for using Liquid templates in Orchard Core. Covers Liquid syntax, global objects, zones, render_section, shape rendering, alias handles, content access, Orchard Core tags and filters, LiquidPart and the new LiquidField, the ManageLiquidTemplates permission, Site property redaction with PermittedSiteProperties, Liquid parser options, ILiquidTemplateManager, Liquid shape templates, and Liquid best practices. Use this skill when requests mention Orchard Core Liquid, Write Liquid Templates, Global Objects, Content Item Access, LiquidPart, LiquidField, ManageLiquidTemplates, SettingsLiquidOptions, Site.Properties, RenderLiquid migration, slugify, transliterate, Orchard Core Liquid Tags, or closely related Orchard Core implementation, setup, extension, or troubleshooting work.
What it loads into context
Frontmatter
179 tokensAlways available to the agent
SKILL.md
2,652 tokensWhen the skill is activated
Reference documents
309 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Where Liquid Executes
- Site Properties
- Parser Configuration
- Slugs and Transliteration
- Zones and Sections
- Shapes and Content Handles
- Content and Localized Text
- Data Localization Filters
- Liquid Shape Templates
- Rendering Liquid from Code
- Custom Filters
- Upgrading from 3.x
Files
SKILL.mdcore11,187 bytesSKILL.mdcore11,187 bytesSKILL.mdcore11,187 bytesSKILL.mdcore11,187 bytesSKILL.mdcore11,187 bytesSKILL.mdcore11,187 bytesreferences/liquid-examples.mddoc1,160 bytes
Read SKILL.md
# Orchard Core Liquid
Liquid templates use the `.liquid` extension and receive Orchard Core globals,
shapes, filters, and tags. Liquid is powered by Fluid and all output is HTML
encoded unless the `raw` filter is used.
```liquid
{{ Site.SiteName }}
{{ Culture.Name }}
{{ User.Identity.Name }}
{{ Request.Path }}
```
Use `Culture.Name` for the current request culture; do not treatView the complete source on GitHuborchardcore-lists
When your agent uses it
Skill for working with ListPart in Orchard Core. Covers list content types, ListPart shapes, list item rendering, PagerSlim cursor paging and the full pager, page size selection with the pageSize query string, ShowHeader, admin list ordering with List or Grid layouts, ContainedPartIndex queries, IContainerService, list RSS feeds, GraphQL, Liquid filters, Razor templates, and blog or collection patterns. Use this skill when requests mention Orchard Core Lists, ListPart, ContainedPart, blogs with posts, ListPartSettings, ListPartViewModel, list_items, list_count, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include OrchardCore.Lists, ListPart, ContainedPart, ContainedPartIndex, ListPartSettings, PagerSlim, IContainerService, QueryListItemsAsync, and AutoroutePart container patterns, plus migrations and recipes.
What it loads into context
Frontmatter
216 tokensAlways available to the agent
SKILL.md
3,046 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Working with ListPart
Files
SKILL.mdcore13,613 bytes
Read SKILL.md
# Orchard Core Lists - Prompt Templates
## Working with ListPart
You are an Orchard Core expert. Generate code and configuration for list-based content types using ListPart in Orchard Core.
### Guidelines
- ListPart is provided by the `OrchardCore.Lists` module and associates child content items with a parent container.
- A classic example is a Blog (parent) containing BlogPost items (children).
- ListPart stores child items as separate content items linked via `ContainedPart`, unlike BagPart which embeds items inline.
- Configure `ContainedContentTypes` in `ListPartSettings` to restrict which content types can be added to the list.
- Enable ordering via `EnableOrdering` in `ListPartSettings` for drag-and-drop reordering.
- Set `PageSize` in `ListPartSettings` (default `10`) to control pagination. By default the front-end list uses the cursor-based `PagerSlim` (newer/older links, `before`/`after` query values); set `ShowFullPager = true` for a numbered `Pager` (`page` query value).View the complete source on GitHuborchardcore-localization
When your agent uses it
Skill for configuring localization and multi-language support in Orchard Core. Covers choosing between PO, data and content localization, culture settings and the LocalizationSettings recipe, the Localization CultureOptions configuration section, request culture providers, the S, H and T localizer conventions, PO file contexts and discovery locations, IStringLocalizerFactory custom contexts, pluralization and IPluralRuleProvider, validation message translation, a short LocalizationSource guide, IJSLocalizer, Liquid t and transliterate filters, the admin culture picker, and PoExtractor. Use this skill when requests mention Orchard Core Localization, adding a culture, translating UI strings, PO files, msgctxt, plural forms, translating validation messages, upgrading localization code to Orchard Core 4, or related setup or troubleshooting work. Strong matches include OrchardCore.Localization, IStringLocalizer, IViewLocalizer, IPluralRuleProvider, ILocalizationService, and LocalizationSettings.
What it loads into context
Frontmatter
217 tokensAlways available to the agent
SKILL.md
3,135 tokensWhen the skill is activated
Reference documents
772 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Choose the Layer
- Culture Settings
- UI Strings
- Pluralization
- PO Contexts and Locations
- Validation Messages
- Deferring Localization with LocalizationSource
- JavaScript Localization
- Content and Admin Culture Pickers
- Gotchas
- Upgrading from 3.x
Files
SKILL.mdcore13,072 bytesSKILL.mdcore13,072 bytesreferences/localization-examples.mddoc3,154 bytes
Read SKILL.md
# Orchard Core Localization
## Choose the Layer
| Goal | Use |
|---|---|
| Translate a label or message in C#, Razor or Liquid | PO localization (`OrchardCore.Localization`) with `S`, `H` or `T` and a PO file |
| Count-dependent text ("1 item" / "{0} items") | `Plural()` and a PO `msgid_plural` entry |
| Text declared where no localizer or culture exists (static fields, permissions, deployment steps, descriptors) | `LocalizationSource`, see `orchardcore-localization-source` |
| Translate data-driven values (content type names, context-free permission descriptions, custom dynamic strings) | Data Localization (`OrchardCore.DataLocalization`), see `orchardcore-data-localization` |
| Translate content items (a blog post in French) | Content Localization (`LocalizationPart`), see `orchardcore-content-localization` |
| Add a supported culture or change the default one | Culture settings below |
| Feature | Purpose |View the complete source on GitHuborchardcore-localization-source
When your agent uses it
Skill for deferred localization with LocalizationSource in Orchard Core 4.0. Covers Create(value, type), Create of T, Value and Type, the IStringLocalizerFactory and IHtmlLocalizerFactory Localize and Plural extensions with format arguments, why deferred sources exist (PO context kept until display time, static readonly labels, extractor discovery), PO entries with msgctxt, the Orchard Core APIs that use it (Permission Description, DeploymentStep Category and Title, data source, file format, pipeline step and shared link descriptors), the Data Localization interaction, and migrating 3.x code. Use this skill when requests mention Orchard Core LocalizationSource, deferring localization, localizing static labels, translating permission descriptions or deployment step titles, or upgrading such code to Orchard Core 4. Strong matches include OrchardCore.Localization, LocalizationSource, StringLocalizerFactoryExtensions, Permission.Description, and DeploymentStep.Title.
What it loads into context
Frontmatter
216 tokensAlways available to the agent
SKILL.md
2,933 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Declare Now, Translate at Display Time
Files
SKILL.mdcore13,515 bytesSKILL.mdcore13,515 bytesSKILL.mdcore13,515 bytesSKILL.mdcore13,515 bytesSKILL.mdcore13,515 bytesSKILL.mdcore13,515 bytesSKILL.mdcore13,515 bytesSKILL.mdcore13,515 bytesSKILL.mdcore13,515 bytesSKILL.mdcore13,515 bytesSKILL.mdcore13,515 bytesSKILL.mdcore13,515 bytesSKILL.mdcore13,515 bytesSKILL.mdcore13,515 bytes
Read SKILL.md
# Orchard Core Deferred Localization with LocalizationSource - Prompt Templates
## Declare Now, Translate at Display Time
You are an Orchard Core expert. Generate code that declares translatable text where no localizer or culture is available and translates it when it is shown.
### Guidelines
- `LocalizationSource` (namespace `OrchardCore.Localization`, package `OrchardCore.Abstractions`) is an immutable `sealed record` holding an untranslated `Value` and an optional source `Type`. It never translates, formats, or encodes anything.
- Declare sources with `LocalizationSource.Create<T>(value)` when `T` can be a generic argument, and `LocalizationSource.Create(value, typeof(T))` for static classes or runtime types. Prefer these factories over `new LocalizationSource(...)` or target-typed `new(...)`, so source-extraction tools can find them.
- `Value` is the PO `msgid`. `Type.FullName` is the PO `msgctxt` (an inner class `+` becomes `.`), exactly like `IStringLocalizer<T>`.
- Keep the value a literal. Never build it with string interpolation or concatenation; pass dynamic parts as format arguments at display time.
- Store sources in `static readonly` fields (or static get-only properties). They are safe to share across instances, tenants, and cultures.
- Translate with `IStringLocalizerFactory.Localize()` for text and attributes, and `IHtmlLocalizerFactory.Localize()` only for trusted translation markup. The display call site picks the encoding, not the declaration.View the complete source on GitHuborchardcore-logging-serilog
When your agent uses it
Skill for configuring Serilog logging in Orchard Core. Covers the OrchardCore.Logging.Serilog package reference in the web project, appsettings.json Serilog configuration with Console and File sinks, Program.cs initialization with UseSerilog or UseSerilogWeb, tenant-aware logging with UseSerilogTenantNameLogging and TenantName enrichment, output templates, per-environment configuration, and replacing the default NLog setup of the Orchard Core templates. Use this skill when requests mention Orchard Core Serilog Logging, Serilog Configuration in appsettings.json, Output Template Tokens, Minimum Level Overrides, tenant name in logs, or closely related Orchard Core setup or troubleshooting work. Strong matches include OrchardCore.Logging.Serilog, UseSerilogWeb, UseSerilogTenantNameLogging, FromLogContext, SourceContext, TenantName, ReadFrom.Configuration(), UseNLogHost.
What it loads into context
Frontmatter
206 tokensAlways available to the agent
SKILL.md
2,178 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Serilog Structured Logging
Files
SKILL.mdcore9,205 bytes
Read SKILL.md
# Orchard Core Serilog Logging - Prompt Templates
## Configure Serilog Structured Logging
You are an Orchard Core expert. Generate configuration and code for Serilog integration including structured logging, Console and File sinks, tenant-aware enrichment, and output template customization.
### Guidelines
- Add a `PackageReference` to `OrchardCore.Logging.Serilog` in the **web (startup) project**. It is a host-level library, not a module: there is no feature to enable and no recipe step.
- The Orchard Core templates use NLog (`builder.Host.UseNLogHost()`); remove that call (and the `OrchardCore.Logging.NLog` reference) when switching to Serilog.
- Configure Serilog in `appsettings.json` under the `Serilog` section.
- Initialize Serilog in `Program.cs` using `UseSerilog()` and `ReadFrom.Configuration()`.
- Always call `Enrich.FromLogContext()` to enable log context enrichment.
- Call `UseSerilogTenantNameLogging()` in the Orchard Core pipeline to add `TenantName` to the log context.View the complete source on GitHuborchardcore-lucene
When your agent uses it
Skill for configuring Lucene search in Orchard Core. Covers Lucene index creation and management, recipe steps for index operations, Lucene queries and the Lucene Query API, query filters, the Lucene Worker background task, custom data indexing, automatic field mapping, Elasticsearch Query DSL support in Lucene, LuceneSearchPermissions and dynamic per-index permissions, and the Orchard Core 4.0 removal of obsolete Lucene permission members. Use this skill when requests mention Orchard Core Lucene Search, Configure Lucene Search, Enabling Lucene Features, Creating a Lucene Index Profile, Legacy Index Creation (Obsolete), Reset Lucene Index, Rebuild Lucene Index, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.Lucene, OrchardCore.Search.Lucene.Worker, OrchardCore.Search, OrchardCore.Indexing, CreateOrUpdateIndexProfile, LuceneIndexSettings, ManageLuceneIndexes, QueryLuceneApi.
What it loads into context
Frontmatter
231 tokensAlways available to the agent
SKILL.md
2,827 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Lucene Search
Files
SKILL.mdcore11,724 bytesSKILL.mdcore11,724 bytesSKILL.mdcore11,724 bytes
Read SKILL.md
# Orchard Core Lucene Search - Prompt Templates
## Configure Lucene Search
You are an Orchard Core expert. Generate code and configuration for Lucene-based full-text search in Orchard Core.
### Guidelines
- Enable `OrchardCore.Lucene` to manage Lucene indexes.
- Lucene indexes are stored on the local file system under `/App_Data/Sites/{TenantName}/Lucene/{IndexName}`.
- Use the `CreateOrUpdateIndexProfile` recipe step to create indexes (preferred over the obsolete `lucene-index` and `LuceneIndexSettings` steps).
- Use the `ResetIndex` recipe step to restart indexing from the beginning without deleting existing entries (preferred over the obsolete `lucene-index-reset` step).
- Use the `RebuildIndex` recipe step to delete and recreate the full index (preferred over the obsolete `lucene-index-rebuild` step).
- Lucene queries use Elasticsearch Query DSL syntax.View the complete source on GitHuborchardcore-markdown
When your agent uses it
Skill for using MarkdownBodyPart and MarkdownField in Orchard Core. Covers Markdown content editing, shape templates for Liquid and Razor, custom editor configurations, final-output Markdown sanitization, shortcodes, the Markdig extension pipeline, the OrchardCore Markdown configuration section, IMarkdownService, IMarkdownDisplayService, the markdownify filter, and migrating away from RenderLiquid. Use this skill when requests mention Orchard Core Markdown, Use MarkdownBodyPart for Content Editing, Enabling Markdown, Attaching MarkdownBodyPart to a Content Type, Shapes, MarkdownBodyPartViewModel Properties, MarkdownToHtmlAsync, MarkdownPipelineOptions, ConfigureMarkdownPipeline, DefaultMarkdownService or closely related Orchard Core work. Strong matches include work with OrchardCore.Markdown, OrchardCore.Markdown.ViewModels, MarkdownBodyPart, MarkdownField, MarkdownBodyPartSettings, MarkdownFieldSettings, TypePartSettings, PartFieldDefinition.
What it loads into context
Frontmatter
211 tokensAlways available to the agent
SKILL.md
3,002 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Use MarkdownBodyPart for Content Editing
Files
SKILL.mdcore14,636 bytes
Read SKILL.md
# Orchard Core Markdown - Prompt Templates
## Use MarkdownBodyPart for Content Editing
You are an Orchard Core expert. Generate code, templates, and configuration for the Markdown module — enabling Markdown-based content editing with Markdig pipeline support.
### Guidelines
- Enable the `OrchardCore.Markdown` feature to use `MarkdownBodyPart` and `MarkdownField`.
- The authored Markdown is persisted exactly as entered. On display it is converted to HTML, shortcodes are processed, and the final HTML is sanitized when `SanitizeHtml` is enabled (the default).
- Liquid in Markdown is not executed; use `LiquidPart` or `LiquidField` when content needs Liquid.
- Shape templates use `MarkdownBodyPartViewModel` / `MarkdownFieldViewModel`, whose `Html` is the final rendered output and whose `Markdown` is the authored source.
- The Markdig pipeline is configured with the `OrchardCore:Markdown:Extensions` setting or `ConfigureMarkdownPipeline` in code, and built once per tenant.
- Two built-in editors are available: `Default` (plain text area) and `Wysiwyg`.View the complete source on GitHuborchardcore-media
When your agent uses it
Skill for managing media in Orchard Core. Covers the OrchardCore Media configuration section, MediaOptions, allowed and restricted file extensions, UploadRestrictedMedia, tenant-contained AssetsPath, temporary upload storage, on-demand image resizing with the NetVips engine, custom IImageProcessingEngine and IResizedImageCache, media profiles, Liquid filters, Razor helpers and tag helpers, MediaField editors (Standard, Gallery, Attached), Secure Media, MediaPermissions, the media and MediaProfiles recipe steps, move-attached-media-fields, media indexing, media events, and upgrading from ImageSharp and OrchardCore.Media.ImageSharpV3. Use this skill when requests mention Orchard Core Media, media library configuration, image resizing, resize_url, asset_url, media profiles, MediaField, Secure Media, media permissions, IMediaEventHandler, IMediaCreatingEventHandler, MediaPermittedStorageContext, or closely related Orchard Core implementation, setup, extension, or troubleshooting work.
What it loads into context
Frontmatter
223 tokensAlways available to the agent
SKILL.md
4,135 tokensWhen the skill is activated
Reference documents
824 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Features
- Configuration (`OrchardCore:Media`)
- Image Processing
- Media Profiles
- Rendering Media
- Media Fields
- Importing Files (`media` step)
- Permissions
- Media Events
- Media Indexing
- Upgrading from 3.x
Files
SKILL.mdcore16,954 bytesreferences/media-examples.mddoc3,662 bytes
Read SKILL.md
# Orchard Core Media
## Guidelines
- `OrchardCore.Media` provides the media library, the `IMediaFileStore`, on-demand image resizing, media profiles and `MediaField`. Files are stored in `App_Data/Sites/{tenant}/Media` and served from `/media`.
- The admin UI is the Vue 3 Media Gallery backed by the `api/media` Media API; see `orchardcore-media-gallery` for the gallery, the API, TUS uploads, SignalR and multi-instance setup.
- Only one storage provider is active at a time: file system (default), Azure Blob (`orchardcore-azure-media`) or Amazon S3 (`orchardcore-amazon-s3-media`).
- Images are resized by the built-in middleware and the NetVips engine (`IImageProcessingEngine`). Orchard Core no longer depends on ImageSharp.
- Use `resize_url`, `AssetUrl` or the `img-*` tag helper attributes instead of hand-written query strings: with `UseTokenizedQueryString` (default) the parameters are HMAC-signed per tenant.
- Reference permissions through `OrchardCore.Media.MediaPermissions`.
## Features
| Feature ID | Purpose |View the complete source on GitHuborchardcore-media-gallery
When your agent uses it
Skill for the Orchard Core 4 Vue 3 Media Gallery and the api/media Media API. Covers gallery features, list and grid views, DisableThumbnails, upload size and extension limits in pickers, MediaApiSettings AuthenticationScheme Cookie or Bearer, antiforgery, the MediaApiPkce, MediaApiStandalone and MediaApiStandaloneLocalhost recipes, the media_gallery OpenID client, standalone gallery config.json, OrchardCore.Media.Tus resumable uploads, ITusTempStore for Azure Blob and Amazon S3, OrchardCore.Media.SignalR real-time updates with the OrchardCore.SignalR, OrchardCore.SignalR.Redis and OrchardCore.SignalR.Azure backplanes, the /hubs/media hub, multi-instance media deployments, and migrating custom code from the removed Media AdminController AJAX endpoints. Use this skill when requests mention the Orchard Core Media Library admin UI, Media API endpoints, media upload from JavaScript, TUS uploads, media SignalR, ManageMediaApiSettings, or scaling the Media Library across instances.
What it loads into context
Frontmatter
238 tokensAlways available to the agent
SKILL.md
3,899 tokensWhen the skill is activated
Reference documents
1,024 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Features
- Gallery Behavior
- Media API Authentication
- Media API Endpoints
- TUS Resumable Uploads (`OrchardCore.Media.Tus`)
- SignalR Real-time Updates (`OrchardCore.Media.SignalR`)
- Multi-instance Deployment
- Upgrading from 3.x
Files
SKILL.mdcore15,616 bytesreferences/media-api-examples.mddoc4,814 bytes
Read SKILL.md
# Orchard Core Media Gallery and Media API
Orchard Core 4.0 rewrote the Media Library admin UI as a **Vue 3 Media Gallery**
backed by the **Media API**, minimal-API endpoints under `api/media`. The same
gallery powers the Media Library page, the media picker modal (media fields,
HTML/Markdown editors) and the media field gallery editor. For media storage,
profiles, permissions and image resizing see `orchardcore-media`.
## Features
| Feature ID | Purpose |
|---|---|
| `OrchardCore.Media` | Gallery, Media API, picker. Always required. |
| `OrchardCore.Media.Tus` | Resumable chunked uploads through the TUS protocol (`/api/media/tus`). |View the complete source on GitHuborchardcore-media-slugify
When your agent uses it
Skill for enabling SEO-friendly slugified media folder and file names in Orchard Core. Covers the OrchardCore.Media.Slugify feature, the OrchardCore Media Slugify configuration section and its Transliterate option, environment variable names, name normalization behavior, collisions, and custom IMediaNameNormalizerService implementations. Use this skill when requests mention Orchard Core Media Slugify, SEO-friendly media URLs, slugified asset names, media folder normalization, transliteration of uploaded file names, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include SlugifyMediaNameNormalizerService, MediaSlugifyOptions, MediaSlugifyOptionsConfiguration, IMediaNameNormalizerService, ISlugService, and upgrading from the OrchardCore_Media_Slugify section.
What it loads into context
Frontmatter
190 tokensAlways available to the agent
SKILL.md
1,068 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Slugify Media Names
Files
SKILL.mdcore4,519 bytes
Read SKILL.md
# Orchard Core Media Slugify
## Slugify Media Names
Enable the Media Slugify feature so newly created media folders and files get
SEO-friendly, URL-safe names.
### Guidelines
- Enable `OrchardCore.Media.Slugify` (depends on `OrchardCore.Media`).
- The feature registers `SlugifyMediaNameNormalizerService` as the `IMediaNameNormalizerService`. The Media API (gallery uploads, folder creation) calls it for every new folder and file.
- Example: `The team (2020).jpg` in `Images & docs` becomes `the-team-2020.jpg` in `images-docs`, so `/media/Images%20&%20docs/The%20team%20(2020).jpg` becomes `/media/images-docs/the-team-2020.jpg`. The file extension is kept.
- Existing folders and files are NOT renamed; only new ones are slugified.
- Different names can produce the same slug (`The team (2020).jpg` and `The Team 2020.jpg`); the second upload then collides with the first.View the complete source on GitHuborchardcore-menus
When your agent uses it
Skill for creating and managing menus in Orchard Core. Covers menu content types, link, content, and HTML menu item types, the menu Razor tag helper and Liquid shape with caching, menu permissions (ManageMenu, MenuItemPermissionPart), render-time URL validation and HTML sanitization of menu items, navigation rendering, menu shape differentiators and alternates, and recipes. Use this skill when requests mention Orchard Core Menus, Create and Manage Navigation Menus, Enabling Menu Features, Menu Item Types, Creating a Menu via Recipe, Multi-Level Navigation Menu, or closely related Orchard Core implementation, setup, extension, or troubleshooting work.
What it loads into context
Frontmatter
160 tokensAlways available to the agent
SKILL.md
1,734 tokensWhen the skill is activated
Reference documents
341 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Menu Item Types
- Recipe
- Shape Alternates
- Razor Tag Helper
- Marking the Active Item
Files
SKILL.mdcore7,132 bytesreferences/menus-examples.mddoc1,452 bytes
Read SKILL.md
# Orchard Core Menus
Enable `OrchardCore.Menu`. A menu is a `Menu` content item with
`MenuItemsListPart`; its entries are nested content items such as
`LinkMenuItem`, `ContentMenuItem`, or `HtmlMenuItem`.
## Menu Item Types
| Type | Purpose | URL source |
|---|---|---|
| `LinkMenuItem` | Static navigation link | Hardcoded `LinkMenuItemPart.Url` |
| `ContentMenuItem` | Link derived from a referenced content item | Resolved from the referenced item's route |
| `HtmlMenuItem` | Custom markup inside a menu | HTML stored on `HtmlMenuItemPart` |
View the complete source on GitHuborchardcore-microsoft-auth
When your agent uses it
Skill for configuring Microsoft authentication in Orchard Core. Covers Microsoft Account login, Microsoft Entra ID (Azure AD) authentication, single and multi-tenant app registrations, current feature IDs, current settings paths, MicrosoftAccountSettings and AzureADSettings recipes, the generic Settings step, ConfigureMicrosoftAccountSettings and ConfigureAzureADSettings with the OrchardCore Authentication MicrosoftAccount and AzureAD configuration sections, AppSecret from configuration, and callback URL setup. Use this skill when requests mention Orchard Core Microsoft Authentication, Microsoft Account Authentication, Microsoft Account Settings, Microsoft Entra ID Authentication, Azure Active Directory login, Entra ID Settings, or closely related Orchard Core implementation, setup, extension, upgrade, or troubleshooting work.
What it loads into context
Frontmatter
173 tokensAlways available to the agent
SKILL.md
1,134 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Microsoft Account
- Microsoft Entra ID
- Configuration Overrides
- Upgrading from 3.x
Files
SKILL.mdcore5,046 bytes
Read SKILL.md
# Orchard Core Microsoft Authentication
Enable one or both external-authentication features:
| Feature ID | Settings path |
|---|---|
| `OrchardCore.Microsoft.Authentication.MicrosoftAccount` | **Settings → Security → Authentication → Microsoft** |
| `OrchardCore.Microsoft.Authentication.AzureAD` | **Settings → Security → Authentication → Microsoft Entra ID** |
Both depend on `OrchardCore.Users.ExternalAuthentication`. Register each
tenant's exact HTTPS callback URL at the provider. To accept personal
Microsoft accounts together with work or school accounts, use Entra ID with
tenant `common` instead of the Microsoft Account feature.
View the complete source on GitHuborchardcore-mini-profiler
When your agent uses it
Skill for adding the MiniProfiler performance widget to Orchard Core front-end and admin pages. Covers enabling the feature, the ViewMiniProfilerOnFrontEnd and ViewMiniProfilerOnBackEnd permissions, widget placement in the Footer zone and docking on admin pages, shape rendering timings, YesSql SQL profiling with duplicate and error query badges, MiniProfilerOptions configuration (ResultsAuthorize, ShouldProfile, IgnoredPaths, popup options), result storage across multiple instances, custom timings, and troubleshooting. Use this skill when requests mention Orchard Core Mini Profiler, MiniProfiler, performance profiling, request timings, SQL query profiling, duplicate queries, N+1 queries, slow page diagnosis, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.MiniProfiler, MiniProfilerFilter, MiniProfilerConnectionFactory, CurrentDbProfiler, ShapeStep, MiniProfilerOptions, StackExchange.Profiling.
What it loads into context
Frontmatter
219 tokensAlways available to the agent
SKILL.md
1,841 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Add Performance Profiling
Files
SKILL.mdcore8,622 bytesSKILL.mdcore8,622 bytes
Read SKILL.md
# Orchard Core Mini Profiler - Prompt Templates
## Add Performance Profiling
You are an Orchard Core expert. Enable and configure the MiniProfiler widget so authorized users can see request, shape, and database timings on Orchard Core pages.
### Guidelines
- Enable the `OrchardCore.MiniProfiler` feature per tenant. Use it to investigate a specific problem: profiling adds work to every request of the tenant and exposes route names, SQL, and timings.
- Two permissions decide whether the widget is added to a page:
- `ViewMiniProfilerOnFrontEnd` — front-end (themed) pages.
- `ViewMiniProfilerOnBackEnd` — admin pages.
- The `Administrator` role receives both by default. Never grant them to `Anonymous`.
- Widget permissions do **not** protect the stored results. Configure `MiniProfilerOptions.ResultsAuthorize` (or `ResultsAuthorizeAsync`) before enabling the module where untrusted users can reach the site.View the complete source on GitHuborchardcore-module-creator
When your agent uses it
Creates new Orchard Core modules in a solution that consumes Orchard Core packages, with the ocmodulecms project template, proper structure, manifest, startup, and Orchard Core 4.0 patterns. Use when the user needs to create a module, add content parts, fields, drivers, handlers, settings, admin pages with breadcrumbs and admin lists, minimal API endpoints with Problem Details errors, permissions with LocalizationSource descriptions, RequiredStartup components, temporary files with ITempDirectoryProvider, secure uploads with FileCreationService, or ES module editor scripts without jQuery. Use this skill when requests mention Orchard Core Module Creator, Module Creation Workflow, dotnet new ocmodulecms, or closely related Orchard Core work. Strong matches include OrchardCore.Modules, OrchardCore.Module.Targets, OrchardCore.ProjectTemplates, StartupBase, RequireFeatures, RequiredStartup, FeatureAttribute, OCSG002, DisplayDriver, Initialize, Factory, AdminNavigationProvider, IPermissionProvider.
What it loads into context
Frontmatter
226 tokensAlways available to the agent
SKILL.md
2,998 tokensWhen the skill is activated
Reference documents
7,237 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Prerequisites
- Module Creation Workflow
- Quick Reference
- References
Files
SKILL.mdcore13,121 bytesSKILL.mdcore13,121 bytesSKILL.mdcore13,121 bytesreferences/examples.mddoc8,305 bytesreferences/module-structure.mddoc5,242 bytesreferences/patterns.mddoc19,024 bytes
Read SKILL.md
# Orchard Core Module Creator
Step-by-step creation of a module for an Orchard Core site built on NuGet packages, with code templates for each kind of component. `orchardcore-modules` covers module structure, feature design, and installing third-party modules in more depth; a short section at the end lists what differs when contributing to the Orchard Core repository itself.
## Prerequisites
- .NET SDK 10.0+
- An Orchard Core web project (startup project) referencing `OrchardCore.Application.Cms.Targets`
## Module Creation Workflow
### Step 1: Determine Module Type
| Type | Description | Key Components |View the complete source on GitHuborchardcore-modules
When your agent uses it
Skill for creating and structuring Orchard Core modules in an application that consumes Orchard Core packages. Covers module scaffolding, manifest and feature registration, feature dependencies, Startup classes with Feature, RequireFeatures and the Orchard Core 4.0 RequiredStartup attribute, the OCSG002 analyzer, installing third-party modules in the web project, configuration section naming, static assets, and 4.0 authoring rules. Use this skill when requests mention Orchard Core Modules, Create a Module, Installing Third-Party Modules, Manifest Pattern, Startup Pattern, Project File Pattern, always-composed startup, or closely related Orchard Core implementation, upgrade, or troubleshooting work. Strong matches include OrchardCore.Application.Cms.Targets, OrchardCore.Modules.Manifest, OrchardCore.Module.Targets, Manifest.cs, StartupBase, [Feature], [RequireFeatures], [RequiredStartup], OCSG002.
What it loads into context
Frontmatter
208 tokensAlways available to the agent
SKILL.md
1,676 tokensWhen the skill is activated
Reference documents
888 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Create a Module
Files
SKILL.mdcore7,428 bytesreferences/module-examples.mddoc4,226 bytes
Read SKILL.md
# Orchard Core Modules - Prompt Templates
## Create a Module
You are an Orchard Core expert. Generate the scaffolding for a module owned by
an application that consumes Orchard Core packages. For the full code
templates (parts, fields, drivers, handlers, admin pages, the `ocmodulecms`
project template), use the `orchardcore-module-creator` skill alongside this
one.
### Guidelines
- Module names should be PascalCase and typically prefixed with the organization name (e.g., `MyOrg.MyModule`).
- Every module must have a `Manifest.cs` file declaring its features.View the complete source on GitHuborchardcore-navigation
When your agent uses it
Skill for navigation in Orchard Core. Covers navigation providers (INavigationProvider, NamedNavigationProvider, AdminNavigationProvider), NavigationBuilder positions and permissions, NavigationConstants, rendering named navigation menus, Navigation shape alternates, the Pager and PagerSlim shapes, page size selection with PagerOptions, GetPageSize, PagerSlimParameters.PageSize and the Pager_PageSizeSelector shape, menu content items, and the breadcrumb shapes of OrchardCore.Navigation. Use this skill when requests mention Orchard Core Navigation, Create Navigation and Menus, Custom Admin Navigation Provider, Registering Navigation Provider, Menu Recipe, pagers, items per page, page size selector, or related implementation, upgrade, or troubleshooting work. Strong matches include OrchardCore.Navigation, OrchardCore.Navigation.Core, OrchardCore.Menu, INavigationProvider, NavigationBuilder, Pager, PagerSlim, PagerOptions, PagerParameters, MenuItemsListPart, LinkMenuItemPart.
What it loads into context
Frontmatter
212 tokensAlways available to the agent
SKILL.md
2,758 tokensWhen the skill is activated
Reference documents
1,041 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Create Navigation and Menus
- Pagers
- Menu Recipe (Creating a Menu via Recipe)
- Upgrading from 3.x
- Related skills
Files
SKILL.mdcore11,816 bytesSKILL.mdcore11,816 bytesreferences/navigation-examples.mddoc4,832 bytes
Read SKILL.md
# Orchard Core Navigation - Prompt Templates
## Create Navigation and Menus
You are an Orchard Core expert. Generate navigation providers, menus, and pagers for Orchard Core.
### Guidelines
- `OrchardCore.Navigation` is always enabled. It provides the `Navigation`, `Breadcrumb`, `Pager`, and `PagerSlim` shapes; the APIs live in `OrchardCore.Navigation.Core`.
- Content-managed menus are `Menu` content items from `OrchardCore.Menu` (see `orchardcore-menus`).
- Code-first menu items come from `INavigationProvider` implementations. Inherit from `AdminNavigationProvider` for the admin menu or `NamedNavigationProvider` for any other named menu, and register with `services.AddNavigationProvider<T>()`.
- Use `PrefixPosition()` for alphabetical ordering inside a group, or explicit positions (`"1"`, `"1.1"`) when order matters. Lower positions come first.
- Breadcrumb trails are not built by navigation providers; use the `<breadcrumb>` tag helper (see `orchardcore-breadcrumbs`).
View the complete source on GitHuborchardcore-notifications
When your agent uses it
Skill for managing Orchard Core notifications. Covers notification messages, email and SMS notification delivery methods, notification lifecycle events, the OrchardCore Notifications configuration section and NotificationOptions, workflow activities, the notifications admin list, and notification permissions, plus the difference with INotifier UI messages. Use this skill when requests mention Orchard Core Notifications, Create and Manage Notifications, Enabling Notifications, Notification Model, Sending Notifications with INotificationService, notification center, unread notifications navbar, TotalUnreadNotifications, OrchardCore.Notifications.Sms, upgrading notifications configuration to Orchard Core 4, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include OrchardCore.Notifications, OrchardCore.Notifications.Email, and OrchardCore.Notifications.Sms. It also helps with Implementing a Notification Method Provider.
What it loads into context
Frontmatter
191 tokensAlways available to the agent
SKILL.md
2,314 tokensWhen the skill is activated
Reference documents
1,084 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Create and Manage Notifications
Files
SKILL.mdcore11,387 bytesreferences/notifications-examples.mddoc5,672 bytes
Read SKILL.md
# Orchard Core Notifications - Prompt Templates
## Create and Manage Notifications
Use `INotificationService` to create a persistent notification and dispatch it
through every delivery method available for the recipient. The service contract
is `SendAsync(object notify, INotificationMessage message, CancellationToken)`;
it returns a `NotificationSendResult`.
### Guidelines
- Enable `OrchardCore.Notifications` before using notification services.
- Enable `OrchardCore.Notifications.Email` (requires a configured email
provider) and/or `OrchardCore.Notifications.Sms` (requires a configured SMSView the complete source on GitHuborchardcore-openapi
When your agent uses it
Skill for the Orchard Core 4.0 OpenAPI module. Covers OpenAPI and Swagger schema generation, the Swagger UI, ReDoc and Scalar documentation sub-features, silent authorization-code plus PKCE sign-in for Try it out requests, the OpenApiPkce and OpenApiGeneration recipes, the AllowAnonymousSchemaAccess setting, the ViewOpenApiContent and ManageOpenApi permissions, NSwag client generation, and documenting custom API endpoints. Use this skill when requests mention Orchard Core OpenAPI, Swagger, swagger.json, ReDoc, Scalar, NSwag, API documentation, API client generation, OpenApiSettings, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.OpenApi, OrchardCore.OpenApi.SwaggerUI, OrchardCore.OpenApi.ReDocUI, OrchardCore.OpenApi.ScalarUI, OpenApiPermissions, OpenApiSettings, ProducesResponseType, ApiExecuteQueryGet, and ApiExecuteQueryPost.
What it loads into context
Frontmatter
231 tokensAlways available to the agent
SKILL.md
2,521 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Document and Explore Orchard Core APIs
Files
SKILL.mdcore10,634 bytesSKILL.mdcore10,634 bytes
Read SKILL.md
# Orchard Core OpenAPI - Prompt Templates
## Document and Explore Orchard Core APIs
You are an Orchard Core expert. Generate configuration, recipes, and code for the `OrchardCore.OpenApi` module, which ships with Orchard Core 4.0.
### Guidelines
- `OrchardCore.OpenApi` generates the OpenAPI document (Swashbuckle at `/swagger/v1/swagger.json`, plus the ASP.NET Core `/openapi/*.json` document) for every enabled API endpoint.
- The documentation UIs are separate sub-features that each depend on `OrchardCore.OpenApi`. A disabled UI returns `404`.
- Every documentation URL (`/swagger`, `/redoc`, `/scalar`, `/openapi`) requires an authenticated user with `ViewOpenApiContent`. Anonymous users are redirected to the admin login; authenticated users without the permission get `403`.
- The JSON schema endpoints also require `ViewOpenApiContent` (cookie or `Api` bearer token) unless **Allow anonymous access to the API schema** (`AllowAnonymousSchemaAccess`) is enabled. Unauthenticated schema requests get a `401` with a `WWW-Authenticate` header and a Problem Details body.
- `ManageOpenApi` implies `ViewOpenApiContent`. Grant only `ViewOpenApiContent` to roles that should read the docs without changing settings. Both are granted to Administrator by default.
- Orchard Core APIs authenticate with the `Api` scheme, which accepts bearer tokens only. Swagger UI and Scalar acquire a token silently (authorization code + PKCE, `prompt=none` in a hidden iframe) from the tenant's own OpenID server, using the admin cookie session. ReDoc is read-only and needs no token.View the complete source on GitHuborchardcore-openid
When your agent uses it
Skill for configuring and managing OpenID Connect in Orchard Core. Covers the authorization server, token validation, client integration and management features, the OpenIdServerSettings, OpenIdApplication, OpenIdScope, OpenIdValidationSettings and OpenIdClientSettings recipe steps, client registration, authorization code with PKCE, client credentials, refresh tokens, pushed authorization requests, logout without confirmation through RequireEndSessionConfirmation, userinfo claims, securing APIs with the Api scheme, token endpoint rate limiting, and OpenIdPermissions. Use this skill when requests mention Orchard Core OpenID Connect, OAuth 2.0, OpenIddict, token endpoint, bearer tokens, PKCE, logout confirmation, external OIDC login, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.OpenId, OrchardCore.OpenId.Server, OrchardCore.OpenId.Validation, IOpenIdServerService, IOpenIdApplicationManager, and OpenIdPermissions.
What it loads into context
Frontmatter
228 tokensAlways available to the agent
SKILL.md
3,974 tokensWhen the skill is activated
Reference documents
2,260 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Module Overview
- Authorization Server Settings
- Client Applications
- Authorization Flows
- Scopes and Claims
- Securing APIs with Token Validation
- External OpenID Connect Login
- Upgrading from 3.x
Files
SKILL.mdcore18,007 bytesreferences/openid-examples.mddoc10,266 bytes
Read SKILL.md
# Orchard Core OpenID Connect - Prompt Templates
## Module Overview
The `OrchardCore.OpenId` module provides OpenID Connect and OAuth 2.0 on top of OpenIddict (7.7.1 in Orchard Core 4.0). Enable the features your scenario needs:
| Feature | ID | Purpose |
|---|---|---|
| OpenID Connect Core Services | `OrchardCore.OpenId` | Shared stores and managers. |
| OpenID Connect Management UI | `OrchardCore.OpenId.Management` | Applications and scopes admin. |
| OpenID Connect Authorization Server | `OrchardCore.OpenId.Server` | `/connect/authorize`, `/connect/token`, `/connect/logout`, `/connect/userinfo`, `/connect/par`, introspection, revocation. Depends on Management. |
| OpenID Connect Token Validation | `OrchardCore.OpenId.Validation` | Validates bearer tokens for the `Api` scheme (same tenant, another tenant, or a remote authority). |
| OpenID Connect Client Integration | `OrchardCore.OpenId.Client` | Sign in with an external OIDC provider. Depends on `OrchardCore.Users.ExternalAuthentication`. |
View the complete source on GitHuborchardcore-permission-providers
When your agent uses it
Skill for implementing Orchard Core permission providers. Covers static Permissions classes in Core projects, the IPermissionProvider pattern, AddPermissionProvider registration, LocalizationSource permission descriptions and PO-file translation, IStringLocalizerFactory.Localize, implied and security-critical permissions, dynamic permission templates, default stereotypes, OrchardCoreConstants role names, and the 4.0 removal of obsolete permission members such as CommonPermissions and StandardPermissions.SiteOwner. Use this skill when requests mention Orchard Core Permission Providers, Declaring Permissions, Localized Permission Descriptions, Obsolete Permission Members Removed, Static Permission Definitions in a Core Project, or closely related Orchard Core implementation, setup, extension, upgrade, or troubleshooting work. Strong matches include OrchardCore.Security.Permissions, IPermissionProvider, PermissionStereotype, Permission.Description, UsersPermissions, and MediaPermissions.
What it loads into context
Frontmatter
200 tokensAlways available to the agent
SKILL.md
1,983 tokensWhen the skill is activated
Reference documents
1,865 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Create a Permission Provider
Files
SKILL.mdcore9,649 bytesSKILL.mdcore9,649 bytesreferences/permission-provider-examples.mddoc8,207 bytes
Read SKILL.md
# Orchard Core Permission Providers - Prompt Templates
## Create a Permission Provider
You are an Orchard Core expert. Generate permission-provider code that follows Orchard Core conventions and CrestApps project structure.
### Guidelines
- Declare reusable permissions as `static readonly` fields of a `static` `*Permissions` class (for example `TeamPermissions`) in the feature's `*.Core` or `*.Abstractions` project, so other modules can reference them without depending on the module.
- Keep the provider separate: an `internal sealed class PermissionProvider : IPermissionProvider` in the module project that only lists the permissions and stereotypes.
- Create descriptions with `LocalizationSource.Create("...", typeof(DeclaringType))` (namespace `OrchardCore.Localization`). The type is the PO translation context.
- Register the provider with `services.AddPermissionProvider<PermissionProvider>()` (it uses `TryAddEnumerable`, so double registration is harmless).
- Use `OrchardCoreConstants.Roles.Administrator` instead of hard-coded `"Administrator"`.
- Mark permissions that grant broad or dangerous access with `isSecurityCritical: true`.View the complete source on GitHuborchardcore-placement
When your agent uses it
Skill for configuring Orchard Core placement, including placement.json, tabs, cards, columns, groups, alternates, wrappers, positions with before, after, start and end sentinels, placement precedence, dynamic placement providers, and fluent location syntax in display drivers. Use this skill when requests mention Orchard Core Placement, Configure Orchard Core placement, Placement string format, Segment meanings, Important ordering rules, Valid examples, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with PlacementLocationBuilder, IShapePlacementProvider, IPlacementInfoResolver, PlacementInfo, IBuildShapeContext, ShapePlacementContext, ContentPart_Edit, TextField, differentiators, placement.json. It also helps with placement examples, editor grouping, and the code patterns captured in this skill.
What it loads into context
Frontmatter
192 tokensAlways available to the agent
SKILL.md
4,074 tokensWhen the skill is activated
Reference documents
1,118 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Orchard Core placement
- Placement string format
- Differentiator patterns
- placement.json rules
- placement.json examples
- Display driver placement
- Placement precedence
- Custom placement provider
- Orchard Core editor grouping guidance
- Common zones
Files
SKILL.mdcore16,372 bytesreferences/placement-examples.mddoc4,228 bytes
Read SKILL.md
# Orchard Core Placement - Prompt Templates
## Configure Orchard Core placement
You are an Orchard Core expert. Generate correct placement for shapes, editor shapes, tabs, cards, columns, and fluent display-driver locations.
### Guidelines
- `placement.json` is the standard way to place shapes in modules and themes.
- Display drivers can also place editor/display shapes with `.Location("...")` or the fluent `PlacementLocationBuilder`.
- Placement can target a zone only, or a zone plus editor groupings such as tabs, cards, and columns.
- For Orchard Core editors that use tabs/cards/columns, the view must render Orchard's grouped output, typically with `@await DisplayAsync(Model.Content)`.
- Use tabs, cards, and columns only when Orchard Core is responsible for rendering the grouped editor UI.
- Column names are arbitrary labels used for CSS classes; they do not imply left/right behavior.View the complete source on GitHuborchardcore-publish-later
When your agent uses it
Skill for scheduling unpublished Orchard Core content for automatic publication. Covers PublishLaterPart, scheduled UTC dates, time zones and daylight-saving conversion, programmatic scheduling, PublishLaterPartIndex, editor behavior, admin list (List and Grid layout) display, and the Scheduled Content Items Publisher ScheduledPublishingBackgroundTask. Use this skill when requests mention Orchard Core Publish Later, PublishLaterPart, scheduled publishing, delayed publishing, scheduled content release, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.PublishLater, PublishLaterPart, PublishLaterPartIndex, PublishLaterPartDisplayDriver, ScheduledPublishingBackgroundTask, IBackgroundTask, and ILocalClock. It also helps with migrations, recipes, index behavior, and the code patterns captured in this skill.
What it loads into context
Frontmatter
195 tokensAlways available to the agent
SKILL.md
1,836 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Schedule Future Publication
Files
SKILL.mdcore8,725 bytes
Read SKILL.md
# Orchard Core Publish Later - Prompt Templates
## Schedule Future Publication
You are an Orchard Core expert. Generate content definitions and integration code for publishing an unpublished latest version when its scheduled time arrives.
### Guidelines
- Enable the `OrchardCore.PublishLater` feature. Its module dependency is `OrchardCore.Contents`.
- Attach `PublishLaterPart` to each content type that editors may schedule.
- `PublishLaterPart.ScheduledPublishUtc` is a nullable UTC `DateTime`. The editor converts the editor's local date and time through `ILocalClock` (user time zone when **User Time Zone** is enabled, else site time zone, else server time zone). Local times skipped or repeated by a daylight-saving transition fail conversion and the schedule is not saved.
- Selecting **Publish Later** saves the latest version as a draft with its schedule; an existing published version stays live until then. Past times are accepted and publish on the next run.
- Editors need the normal `PublishContent` permission (with owner and per-type variants) to set or cancel the schedule. There is no dedicated permission, and custom endpoints must authorize themselves.
- The feature registers `ScheduledPublishingBackgroundTask` (title **Scheduled Content Items Publisher**) as an `IBackgroundTask`. Its schedule is `* * * * *`, so due content is checked every minute. Publication can happen after, never before, the scheduled time, and only while the tenant is running.View the complete source on GitHuborchardcore-rate-limits
When your agent uses it
Skill for the Orchard Core 4.0 Rate Limits module. Covers tenant rate-limit policies with Global, Endpoint and Group targets, fixed window, sliding window, concurrency and token bucket limiters, the seeded default global policy, the CreateOrUpdateRateLimitPolicies recipe step, deployment of all policies, built-in route and group limits registered in code through RateLimitsOptions, RateLimitPartitionHelpers, RateLimitGroupAttribute and WithRateLimitGroups, and the limits that Users and OpenID apply to sign-in and token endpoints. Use this skill when requests mention Orchard Core rate limiting, throttling, 429 Too Many Requests, brute-force protection, login rate limits, API rate limits, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.RateLimits, RateLimitsOptions, AddRouteRateLimit, AddGroupRateLimit, RateLimitPartitionHelpers, RateLimitGroupAttribute, ManageRateLimits, and UserRateLimiterPolicyNames.
What it loads into context
Frontmatter
233 tokensAlways available to the agent
SKILL.md
2,481 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Throttle Tenant Requests
Files
SKILL.mdcore11,157 bytes
Read SKILL.md
# Orchard Core Rate Limits - Prompt Templates
## Throttle Tenant Requests
You are an Orchard Core expert. Generate rate-limit policies, recipes, and module code for the `OrchardCore.RateLimits` module, which ships with Orchard Core 4.0.
### Guidelines
- Enable `OrchardCore.RateLimits` (category Security) per tenant. It registers ASP.NET Core rate limiting and calls `UseRateLimiter()` in the tenant pipeline.
- Rejected requests return `429 Too Many Requests`. With `OrchardCore.Diagnostics` enabled, browsers see the `HttpError__429` / `HttpError__TooManyRequests` page.
- Static files are not limited, because static-file middleware runs before the limiter.
- Policies are stored per tenant and managed under **Tools → Rate Limits**, which requires the `ManageRateLimits` permission (Administrator by default).
- Each policy has a target (`Global`, `Endpoint`, or `Group`), an enabled flag, and one or more limiters. Every limiter of every matching enabled policy is applied.
- A disabled policy can be edited freely without reloading the tenant. An enabled policy only allows name and description edits. Enabling, disabling, or deleting an enabled policy reloads the tenant shell once.View the complete source on GitHuborchardcore-razor
When your agent uses it
Skill for building Razor views in Orchard Core themes and modules. Covers _ViewImports.cshtml setup, layouts with RenderBodyAsync, RenderSectionAsync and IsSectionDefined, the zone tag helper, shape tag helpers with caching attributes, resource tag helpers, content link and content item tag helpers, media tag helpers, datetime tag helpers, dynamic cache, IOrchardHelper extensions, and title segments. Use this skill when requests mention Orchard Core Razor Views, _ViewImports.cshtml Setup, Minimum Required Directives, _ViewStart.cshtml Conventions, Layout Rendering Patterns, Minimal Layout Template, Razor helpers, or closely related Orchard Core implementation or troubleshooting work. Strong matches include OrchardCore.DisplayManagement.Razor, OrchardCore.ResourceManagement, OrchardCore.Menu, OrchardCore.Contents.TagHelpers, OrchardCore.Media, OrchardCore.DynamicCache, IOrchardHelper, IOrchardDisplayHelper.
What it loads into context
Frontmatter
215 tokensAlways available to the agent
SKILL.md
4,181 tokensWhen the skill is activated
Reference documents
3,297 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- _ViewImports.cshtml Setup
- _ViewStart.cshtml Conventions
- Layout Rendering Patterns
- Shape Tag Helpers
- Zone Tag Helper
- Link Generation
- Resource Tag Helpers
- Media Tag Helpers
- Content Tag Helpers
- Menu Tag Helper
- Caching Markup
- Date-Time Tag Helpers
- IOrchardHelper Extensions
- Defining Named Resources
- Recipe Step for Themes
Files
SKILL.mdcore17,507 bytesreferences/razor-examples.mddoc13,732 bytes
Read SKILL.md
# Orchard Core Razor Views - Prompt Templates
## _ViewImports.cshtml Setup
Every Orchard Core theme or module should include a `_ViewImports.cshtml` file at the root of its `Views` folder.
### Minimum Required Directives
```cshtml
@inherits OrchardCore.DisplayManagement.Razor.RazorPage<TModel>
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, OrchardCore.DisplayManagement
@addTagHelper *, OrchardCore.ResourceManagement
@addTagHelper *, OrchardCore.MenuView the complete source on GitHuborchardcore-recaptcha
When your agent uses it
Skill for protecting Orchard Core endpoints and forms with Google reCAPTCHA. Covers ReCaptchaSettings through IOptionsMonitor, the OrchardCore ReCaptcha configuration section, ReCaptchaShape, the ReCaptcha shape, the captcha tag helper, form protection, controller validation, recipe configuration, and Users login registration and password reset protection. Use this skill when requests mention Orchard Core ReCaptcha, Google reCAPTCHA, ValidateReCaptchaAttribute, ReCaptchaSettings, Forms reCAPTCHA field, login CAPTCHA, or closely related Orchard Core implementation setup extension or troubleshooting work. Strong matches include OrchardCore.ReCaptcha, OrchardCore.ReCaptcha.Users, OrchardCore.ReCaptcha.Configuration, OrchardCore.ReCaptcha.ActionFilters, ReCaptchaService, ReCaptchaPart, IRegistrationFormEvents, ILoginFormEvent, and IPasswordRecoveryFormEvents. It also helps with forms, workflows, settings recipes, and the source-backed patterns captured in this skill.
What it loads into context
Frontmatter
216 tokensAlways available to the agent
SKILL.md
1,677 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Enable the Base and Users Features
- Configure ReCaptcha Settings
- Read Settings in Code
- Protect a Custom MVC Form
- Render the Shape
- Forms and Workflows
- Upgrading from 3.x
Files
SKILL.mdcore7,447 bytesSKILL.mdcore7,447 bytes
Read SKILL.md
# Orchard Core ReCaptcha
The `OrchardCore.ReCaptcha` feature supplies Google reCAPTCHA rendering and
verification. Add `OrchardCore.ReCaptcha.Users` when built-in user login,
registration, and password recovery pages also need protection. It is not a
replacement for authorization, rate limiting, or server-side input validation.
## Guidelines
- Enable `OrchardCore.ReCaptcha` for the base service, settings, and shape.
- Enable `OrchardCore.ReCaptcha.Users` to protect user forms; it depends on the base feature and Users.
- Enable the Users registration or reset-password features separately when those pages must be protected.
- Store the site key and secret in secure configuration for production, not source control.
- Use the `ReCaptcha` shape or the `<captcha />` tag helper to render a challenge.View the complete source on GitHuborchardcore-recipes
When your agent uses it
Skill for authoring Orchard Core recipes and custom recipe steps. Covers recipe discovery, recipe manifests, setup recipes with issetuprecipe and step ordering, variables and the js and file expressions (uuid, variables, parameters, configuration, file text), execution and cancellation, built-in step contracts and their registered names, the command, media, ReloadTenant and DataPipelines steps, nested recipes, migration recipes, the OpenApiPkce, OpenApiGeneration and MediaApiPkce recipes, and end-to-end IRecipeStepHandler development. Use this skill when requests mention Orchard Core Recipes, Create a Recipe, Setup Recipe, Recipe Steps, Recipe Variables, Recipe Discovery, IRecipeHarvester, IRecipeExecutor, IRecipeMigrator, AddRecipeExecutionStep, RecipeExecutionException, or Custom Recipe Step Handlers. Strong matches include OrchardCore.Recipes, IRecipeStepHandler, NamedRecipeStepHandler, RecipeExecutionContext, RecipeDescriptor, RecipePermissions, ContentDefinition, WorkflowType, and recipe.schema.json.
What it loads into context
Frontmatter
235 tokensAlways available to the agent
SKILL.md
4,472 tokensWhen the skill is activated
Reference documents
501 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Recipe location, discovery, and execution
- Authoring rules
- Required reference workflow
- Recipe structure
- Variables and expressions
- Setup recipes
- Common built-in steps
- Define workflow types and deployment plans
- Write a custom recipe step
- Upgrading from 3.x
Files
SKILL.mdcore19,178 bytesSKILL.mdcore19,178 bytesreferences/recipe-schemas/A2AConnection.schema.jsonasset6,169 bytesreferences/recipe-schemas/AIDataSource.schema.jsonasset2,880 bytesreferences/recipe-schemas/AIDeployment.schema.jsonasset7,440 bytesreferences/recipe-schemas/AIPersonas.schema.jsonasset3,068 bytesreferences/recipe-schemas/AIProfile.schema.jsonasset26,030 bytesreferences/recipe-schemas/AIProfileTemplate.schema.jsonasset32,868 bytesreferences/recipe-schemas/AIProviderConnections.schema.jsonasset6,560 bytesreferences/recipe-schemas/AIToolInstances.schema.jsonasset16,128 bytesreferences/recipe-schemas/AdminMenu.schema.jsonasset789,564 bytesreferences/recipe-schemas/AdminTemplates.schema.jsonasset880 bytesreferences/recipe-schemas/AgentStateReasonCode.schema.jsonasset2,537 bytesreferences/recipe-schemas/AsteriskSettings.schema.jsonasset5,558 bytesreferences/recipe-schemas/AzureADSettings.schema.jsonasset777 bytesreferences/recipe-schemas/ContactCenterAgentEntitlement.schema.jsonasset4,094 bytesreferences/recipe-schemas/ContactCenterBusinessHoursCalendar.schema.jsonasset3,711 bytesreferences/recipe-schemas/ContactCenterDialerProfile.schema.jsonasset9,900 bytesreferences/recipe-schemas/ContactCenterEntryPoint.schema.jsonasset12,469 bytesreferences/recipe-schemas/ContactCenterQueue.schema.jsonasset11,304 bytesreferences/recipe-schemas/ContactCenterQueueGroup.schema.jsonasset1,692 bytesreferences/recipe-schemas/ContactCenterSkill.schema.jsonasset1,776 bytesreferences/recipe-schemas/ContactCenterVoiceMedia.schema.jsonasset4,260 bytesreferences/recipe-schemas/ContentDefinition.schema.jsonasset83,623 bytesreferences/recipe-schemas/CreateAIProfileFromTemplate.schema.jsonasset25,900 bytesreferences/recipe-schemas/CreateOrUpdateIndexProfile.schema.jsonasset1,119 bytesreferences/recipe-schemas/Currencies.schema.jsonasset1,410 bytesreferences/recipe-schemas/Customers.schema.jsonasset7,853 bytesreferences/recipe-schemas/DeleteAIDeployments.schema.jsonasset600 bytesreferences/recipe-schemas/DeleteContentDefinition.schema.jsonasset611 bytesreferences/recipe-schemas/DynamicDataTranslations.schema.jsonasset1,579 bytesreferences/recipe-schemas/ElasticIndexSettings.schema.jsonasset567 bytesreferences/recipe-schemas/FacebookCoreSettings.schema.jsonasset1,011 bytesreferences/recipe-schemas/FacebookLoginSettings.schema.jsonasset432 bytesreferences/recipe-schemas/FeatureProfiles.schema.jsonasset1,571 bytesreferences/recipe-schemas/GitHubAuthenticationSettings.schema.jsonasset673 bytesreferences/recipe-schemas/IndexUsers.schema.jsonasset711 bytesreferences/recipe-schemas/Layers.schema.jsonasset248,708 bytesreferences/recipe-schemas/McpConnection.schema.jsonasset7,669 bytesreferences/recipe-schemas/McpPrompt.schema.jsonasset3,855 bytesreferences/recipe-schemas/McpResource.schema.jsonasset9,285 bytesreferences/recipe-schemas/MediaProfiles.schema.jsonasset1,924 bytesreferences/recipe-schemas/MicrosoftAccountSettings.schema.jsonasset653 bytesreferences/recipe-schemas/OmnichannelCadence.schema.jsonasset3,091 bytesreferences/recipe-schemas/OmnichannelCampaign.schema.jsonasset5,471 bytesreferences/recipe-schemas/OmnichannelCampaignGroup.schema.jsonasset1,751 bytesreferences/recipe-schemas/OmnichannelChannelEndpoint.schema.jsonasset3,661 bytesreferences/recipe-schemas/OmnichannelDisposition.schema.jsonasset2,889 bytesreferences/recipe-schemas/OmnichannelLeadStatus.schema.jsonasset2,288 bytesreferences/recipe-schemas/OmnichannelMessageTemplate.schema.jsonasset1,786 bytesreferences/recipe-schemas/OmnichannelOpportunityStage.schema.jsonasset2,380 bytesreferences/recipe-schemas/OmnichannelSubjectAction.schema.jsonasset3,256 bytesreferences/recipe-schemas/OpenIdApplication.schema.jsonasset3,769 bytesreferences/recipe-schemas/OpenIdClientSettings.schema.jsonasset2,627 bytesreferences/recipe-schemas/OpenIdScope.schema.jsonasset760 bytesreferences/recipe-schemas/OpenIdServerSettings.schema.jsonasset4,864 bytesreferences/recipe-schemas/OpenIdValidationSettings.schema.jsonasset953 bytesreferences/recipe-schemas/Placements.schema.jsonasset4,222 bytesreferences/recipe-schemas/Queries.schema.jsonasset5,069 bytesreferences/recipe-schemas/README.mddoc2,283 bytesreferences/recipe-schemas/RebuildIndex.schema.jsonasset603 bytesreferences/recipe-schemas/ReplaceContentDefinition.schema.jsonasset83,637 bytesreferences/recipe-schemas/ResetIndex.schema.jsonasset595 bytesreferences/recipe-schemas/Roles.schema.jsonasset12,256 bytesreferences/recipe-schemas/Settings.schema.jsonasset90,532 bytesreferences/recipe-schemas/ShortcodeTemplates.schema.jsonasset1,301 bytesreferences/recipe-schemas/Sitemaps.schema.jsonasset15,922 bytesreferences/recipe-schemas/Stock.schema.jsonasset1,613 bytesreferences/recipe-schemas/StripeSettings.schema.jsonasset2,896 bytesreferences/recipe-schemas/TelephonyExtension.schema.jsonasset2,755 bytesreferences/recipe-schemas/TelnyxSettings.schema.jsonasset7,514 bytesreferences/recipe-schemas/TelnyxSmsSettings.schema.jsonasset1,887 bytesreferences/recipe-schemas/Templates.schema.jsonasset844 bytesreferences/recipe-schemas/TimeZoneMaps.schema.jsonasset1,370 bytesreferences/recipe-schemas/Translations.schema.jsonasset1,350 bytesreferences/recipe-schemas/TwitterSettings.schema.jsonasset737 bytesreferences/recipe-schemas/UrlRewriting.schema.jsonasset5,903 bytesreferences/recipe-schemas/Users.schema.jsonasset3,011 bytesreferences/recipe-schemas/WorkflowType.schema.jsonasset267,985 bytesreferences/recipe-schemas/azureai-index-create.schema.jsonasset566 bytesreferences/recipe-schemas/azureai-index-rebuild.schema.jsonasset632 bytesreferences/recipe-schemas/azureai-index-reset.schema.jsonasset624 bytesreferences/recipe-schemas/command.schema.jsonasset491 bytesreferences/recipe-schemas/content.schema.jsonasset2,355 bytesreferences/recipe-schemas/custom-settings.schema.jsonasset320 bytesreferences/recipe-schemas/custom-user-settings.schema.jsonasset1,578 bytesreferences/recipe-schemas/deployment.schema.jsonasset58,282 bytesreferences/recipe-schemas/elastic-index-rebuild.schema.jsonasset628 bytesreferences/recipe-schemas/elastic-index-reset.schema.jsonasset620 bytesreferences/recipe-schemas/feature.schema.jsonasset37,080 bytesreferences/recipe-schemas/index.jsonasset8,806 bytesreferences/recipe-schemas/lucene-index-rebuild.schema.jsonasset612 bytesreferences/recipe-schemas/lucene-index-reset.schema.jsonasset604 bytesreferences/recipe-schemas/lucene-index.schema.jsonasset542 bytesreferences/recipe-schemas/media.schema.jsonasset1,261 bytesreferences/recipe-schemas/move-attached-media-fields.schema.jsonasset566 bytesreferences/recipe-schemas/recipe.schema.jsonasset2,516,056 bytesreferences/recipe-schemas/recipes.schema.jsonasset918 bytesreferences/recipe-schemas/themes.schema.jsonasset818 bytes
Read SKILL.md
# Orchard Core Recipes
Recipes are JSON documents that configure a tenant through ordered steps. Use a recipe for repeatable setup, environment provisioning, deployment imports, or migration updates. Steps are processed in order and their names are case-insensitive at handler dispatch, but use the registered casing below and in the schemas.
## Recipe location, discovery, and execution
- Place an extension recipe at `Recipes/<name>.recipe.json` in a module or theme. The extension's manifest makes that extension discoverable; there is no separate recipe manifest file.
- `RecipeHarvester` iterates enabled extensions and reads each extension's `Recipes` folder. The application recipe harvester also contributes application-level recipes.
- Set `issetuprecipe` to `true` only for recipes intended to appear during tenant setup.
- Run a discovered recipe from **Configuration → Recipes**, during setup, or from another recipe using the `Recipes` step. A data migration may execute a recipe in its module/theme `Migrations` folder through `IRecipeMigrator`.
- Programmatic execution uses `IRecipeExecutor.ExecuteAsync(executionId, recipeDescriptor, environment, cancellationToken)`. A `RecipeDescriptor` carries the recipe metadata, base path, file provider, and recipe file.
- The cancellation token also bounds the `[js: ...]` expressions of each step: cancelling while a step's script runs stops the script and fails that step with a `RecipeExecutionException` wrapping the `OperationCanceledException`. Only setup passes a cancellable token (the application stopping token). The recipe `variables()` are not bounded by cancellation.
- Running recipes from the admin requires `RecipePermissions.ManageRecipes`.
- Uploaded and imported recipe archives are extracted under the tenant-scoped temporary directory (`ITempDirectoryProvider`, `OrchardCore:TempDirectory:Path`), not `Path.GetTempPath()`.View the complete source on GitHuborchardcore-redis
When your agent uses it
Skill for configuring Redis in Orchard Core. Covers Redis cache, message bus, distributed locking, data protection, health checks, the OrchardCore Redis configuration section, environment variable and Key Vault secret names, InstancePrefix and AllowAdmin, key storage structure, the OrchardCore.SignalR.Redis backplane, TUS upload metadata and locks for the Media Gallery, and multi-instance deployment. Use this skill when requests mention Orchard Core Redis, Redis configuration, SignalR Redis backplane, scaling Orchard Core across instances, upgrading from the OrchardCore_Redis section, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include OrchardCore.Redis, OrchardCore.Redis.Cache, OrchardCore.Redis.Bus, OrchardCore.Redis.Lock, OrchardCore.Redis.DataProtection, OrchardCore.SignalR.Redis, IDistributedCache, IDistributedLock, and ISignal.
What it loads into context
Frontmatter
203 tokensAlways available to the agent
SKILL.md
2,649 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Redis Integration
Files
SKILL.mdcore11,813 bytes
Read SKILL.md
# Orchard Core Redis - Prompt Templates
## Configure Redis Integration
You are an Orchard Core expert. Generate code and configuration for Redis integration including Redis cache, message bus, distributed locking, data protection, health checks, configuration, key storage, and multi-instance deployment.
### Guidelines
- Enable `OrchardCore.Redis` as the base feature for Redis configuration support.
- Enable `OrchardCore.Redis.Cache` for distributed caching using Redis as the `IDistributedCache` backend.
- Enable `OrchardCore.Redis.Bus` for distributed `ISignal` service, making cache invalidation work across multiple application instances.
- Enable `OrchardCore.Redis.Lock` for distributed locking using Redis.
- Enable `OrchardCore.Redis.DataProtection` for storing ASP.NET Core Data Protection keys in Redis.
- Configure the Redis connection string via `OrchardCore:Redis:Configuration` (env var `OrchardCore__Redis__Configuration`, Key Vault secret `OrchardCore--Redis--Configuration`). Without it the Redis features stay inactive and an error is logged.View the complete source on GitHuborchardcore-resources
When your agent uses it
Skill for managing CSS and JavaScript resources in Orchard Core. Covers resource manifest registration, built-in named resources (jQuery, bootstrap, bootstrap-select, font-awesome, vuejs 3, vue-multiselect, vue-draggable, Sortable, codemirror, monaco, list-management), CDN settings, the OrchardCore Resources configuration section, script and style tag helpers, Liquid resource tags, dependencies and versions, inline scripts and styles, meta and link tags, IResourceManager from code, and upgrading from Orchard Core 3 (jQuery no longer pulled in by admin scripts, Vue 2 resources removed, bootstrap-select styles not included by TheAdmin). Use this skill when requests mention Orchard Core Resources, Registering a Resource Manifest, Built-in Named Resources, resource tag helpers, Liquid resource tags, missing jQuery after upgrading, or troubleshooting. Strong matches include OrchardCore.Resources, OrchardCore.ResourceManagement, ResourceManagementOptions, ResourceManifest, IResourceManager, RequireSettings.
What it loads into context
Frontmatter
231 tokensAlways available to the agent
SKILL.md
3,910 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Managing CSS and JavaScript Resources
- Upgrading from 3.x
Files
SKILL.mdcore16,311 bytes
Read SKILL.md
# Orchard Core Resources - Prompt Templates
## Managing CSS and JavaScript Resources
You are an Orchard Core expert. Generate code and configuration for registering and rendering CSS/JavaScript resources in Orchard Core.
### Guidelines
- **Package requirement:** To use the resource tag helpers (`<script asp-name>`, `<style asp-name>`, `<resources>`, `<link>`, `<meta>`), the `IResourceManager` API, or `IConfigureOptions<ResourceManagementOptions>`, the consuming project **must reference the `OrchardCore.ResourceManagement` NuGet package**. OrchardCore modules and themes (which target `OrchardCore.Module.Targets` / `OrchardCore.Theme.Targets`) usually get it transitively, but standalone MVC, decoupled, or headless projects must add the `<PackageReference Include="OrchardCore.ResourceManagement" />` explicitly. The `@addTagHelper *, OrchardCore.ResourceManagement` directive and the `at="Foot"`/`at="Head"` script placement resolve from that assembly.
- The `OrchardCore.Resources` module provides the Resource Manager for declaring, ordering, and rendering scripts and styles.
- Resources are served from a module or theme's `wwwroot` folder via `StaticFileMiddleware`.
- Resource paths use the `~/ModuleName/` or `~/ThemeName/` prefix convention (tilde represents tenant base path).
- Named resources have a name, type (script/stylesheet), optional version, CDN URLs, and dependencies.
- Register resource manifests by implementing `IConfigureOptions<ResourceManagementOptions>` and calling `services.AddResourceConfiguration<T>()` in `Startup`.View the complete source on GitHuborchardcore-reverse-proxy
When your agent uses it
Skill for configuring reverse proxy support in Orchard Core. Covers the forwarded headers middleware (X-Forwarded-For, X-Forwarded-Proto, X-Forwarded-Host, X-Forwarded-Prefix), ReverseProxySettings in the admin UI and the settings recipe step, the OrchardCore ReverseProxy configuration section with ConfigureReverseProxySettings, KnownProxies and KnownNetworks, multi-tenant configuration, deployment, and the effect on HTTPS redirection, rate limiting and OpenID URLs. Use this skill when requests mention Orchard Core Reverse Proxy, forwarded headers, load balancers, nginx, Azure Front Door, client IP behind a proxy, ReverseProxySettings, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.ReverseProxy, ConfigureReverseProxySettings, ForwardedHeadersOptions, ManageReverseProxySettings, OrchardCoreBuilder, and appsettings.json.
What it loads into context
Frontmatter
219 tokensAlways available to the agent
SKILL.md
1,473 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Reverse Proxy Support
Files
SKILL.mdcore5,965 bytes
Read SKILL.md
# Orchard Core Reverse Proxy - Prompt Templates
## Configure Reverse Proxy Support
You are an Orchard Core expert. Generate configuration and code for reverse proxy scenarios including forwarded headers, trusted proxy networks, and multi-tenant deployments behind load balancers.
### Guidelines
- Enable `OrchardCore.ReverseProxy` per tenant. It calls `UseForwardedHeaders()` early in the tenant pipeline using `ReverseProxySettings`.
- Manage the settings at **Settings → Reverse Proxy** (permission `ManageReverseProxySettings`), with the `settings` recipe step, or from configuration.
- Call `ConfigureReverseProxySettings()` on the `OrchardCoreBuilder` to read the `OrchardCore:ReverseProxy` section. Configuration values override the admin values property by property, and the admin page shows a warning.
- `ForwardedHeaders` accepts `None`, `XForwardedFor`, `XForwardedHost`, `XForwardedProto`, `XForwardedPrefix`, `All`, or a comma-separated combination.
- `KnownNetworks` uses CIDR notation; `KnownProxies` uses IP addresses. The module replaces the ASP.NET Core defaults with these lists, and when both are empty, forwarded headers are accepted from any sender. Always set them in production.
- The forwarded client IP feeds `orchardcore-rate-limits` partitions, audit trail, and login logging; the forwarded scheme and host affect `orchardcore-https` redirection and OpenID issuer and redirect URIs.View the complete source on GitHuborchardcore-rules
When your agent uses it
Skill for building and evaluating Orchard Core rules. Covers Condition models, IConditionEvaluator and ConditionEvaluator, IRuleService, ConditionOptions, rule registration, custom condition display drivers, condition operators, rule serialization, JavaScript condition validation, isolation and request cancellation, and Layers integration while keeping Rules distinct from Scripting. Use this skill when requests mention Orchard Core Rules, IConditionEvaluator, ConditionEvaluator, custom rule condition, rule builders, condition groups, Layers rules, or closely related Orchard Core implementation setup extension or troubleshooting work. Strong matches include work with OrchardCore.Rules, OrchardCore.Rules.Core, OrchardCore.Layers, Condition, ConditionGroup, Rule, IConditionFactory, IConditionResolver, IConditionOperatorResolver, AddRule, and AddRuleCondition. It also helps with built-in conditions, display drivers, rule evaluation, and the source-backed patterns captured in this skill.
What it loads into context
Frontmatter
211 tokensAlways available to the agent
SKILL.md
1,603 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Enable Rules
- Core Types
- Create a Custom Condition
- Register a Builder Condition
- JavaScript Conditions
- Use Rules with Layers
- Upgrading from 3.x
Files
SKILL.mdcore7,662 bytes
Read SKILL.md
# Orchard Core Rules
`OrchardCore.Rules` is the structured condition system used by features such as
Layers. A rule is a model of conditions evaluated against the current request
and context. It is different from `OrchardCore.Scripting`: scripting can power
a condition, but Rules provides condition models, editors, registration,
serialization, and composable all/any groups.
## Guidelines
- Enable the exact `OrchardCore.Rules` feature; it depends on `OrchardCore.Scripting`.
- Use `Condition` as the base type for a custom condition.
- Implement `IConditionEvaluator` with `ValueTask<bool> EvaluateAsync(Condition condition)`, or derive from `ConditionEvaluator<TCondition>` to get a typed override.
- Evaluate a whole rule with `IRuleService.EvaluateAsync(rule)`. A rule, `All` group, or `Any` group with no conditions evaluates to `false`.View the complete source on GitHuborchardcore-sanitizer
When your agent uses it
Skill for configuring HTML sanitization in Orchard Core. Covers the HtmlSanitizer service for XSS prevention, final-output sanitization of HTML and Markdown, source persisted as authored, the sanitized fragment cache, IHtmlSanitizerService, the sanitize_html Liquid filter, Razor sanitize helpers, configuring allowed tags and attributes, scheme allowlists, and custom sanitization configuration. Use this skill when requests mention Orchard Core Sanitizer, Configure HTML Sanitization, Parts and Fields Using the Sanitizer, Orchard Core Default Sanitizer Customizations, Sanitizing HTML in Razor Views, Configuring the Sanitizer in Program.cs, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with HtmlBodyPart, HtmlField, HtmlMenuItemPart, MarkdownBodyPart, MarkdownField, SanitizeHtml, @Orchard.SanitizeHtml(), ConfigureHtmlSanitizer, HtmlSanitizerOptions, AllowedTags.Add('iframe'), AllowedSchemes.Add('ftp').
What it loads into context
Frontmatter
233 tokensAlways available to the agent
SKILL.md
1,849 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure HTML Sanitization
Files
SKILL.mdcore8,309 bytesSKILL.mdcore8,309 bytesSKILL.mdcore8,309 bytesSKILL.mdcore8,309 bytesSKILL.mdcore8,309 bytesSKILL.mdcore8,309 bytes
Read SKILL.md
# Orchard Core Sanitizer - Prompt Templates
## Configure HTML Sanitization
You are an Orchard Core expert. Generate HTML sanitization configurations and custom sanitizer settings for Orchard Core.
### Guidelines
- The HTML Sanitizer is part of Orchard Core's infrastructure — no additional feature needs to be enabled.
- The sanitizer prevents XSS attacks by cleaning the **final rendered** HTML. Authored HTML and Markdown source is stored unchanged; nothing is sanitized on save.
- It is used by default for `HtmlBodyPart`, `HtmlField`, `HtmlMenuItemPart`, `MarkdownBodyPart`, and `MarkdownField`.
- Sanitization can be disabled per field/part via the `Sanitize Html` option (`SanitizeHtml = false`) for trusted output.
- Use the `@Orchard.SanitizeHtml()` Razor helper, the `sanitize_html` Liquid filter, or `IHtmlSanitizerService.Sanitize()` in code.
- Orchard Core customizes the default HtmlSanitizer by allowing the `class` attribute, allowing `mailto` and `tel` schemes, and removing the `form` tag.View the complete source on GitHuborchardcore-scripting
When your agent uses it
Skill for using Orchard Core scripting and creating custom IGlobalMethodProvider implementations. Covers JavaScript evaluation with Jint, IScriptingManager and IScriptingEngine, disposing scripting scopes, built-in global methods, custom scripting providers that stay correct under lazy globals and engine reuse, service resolution from IServiceProvider, configuring Jint.Options execution limits (MaxStatements, TimeoutInterval, LimitMemory, constraint factories), StackOverflowGuard, cancellation tokens that stop scripts, JavaScriptEngineOptions.EnginePoolSize, Jint 4.16 and 4.17 behavior changes, recipe expressions, layer rules, and file scripting. Use it for OrchardCore.Scripting, OrchardCore.Scripting.JavaScript, IScriptingManager, GlobalMethod, JavaScriptEngine, JavaScriptScope, OperationDeadlineConstraint, and related Orchard Core setup, extension, upgrade, or troubleshooting work.
What it loads into context
Frontmatter
202 tokensAlways available to the agent
SKILL.md
7,084 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Use the Orchard Core Scripting Engine
- IGlobalMethodProvider — When and Why
- Upgrading from 3.x
Files
SKILL.mdcore32,673 bytes
Read SKILL.md
# Orchard Core Scripting - Prompt Templates
## Use the Orchard Core Scripting Engine
You are an Orchard Core expert. Generate code and configuration for scripting, JavaScript evaluation, global methods, custom scripting providers, JavaScript engine limits, and recipe scripting expressions.
### Guidelines
- The scripting module provides `IScriptingManager` for evaluating scripts in different languages.
- The default JavaScript engine uses the `js:` prefix and is powered by Jint. The file engine uses `file:`.
- A *directive* passed to `IScriptingManager` carries the prefix (`js: uuid()`). A script passed directly to `IScriptingEngine.Evaluate()` does not.
- Prefer `IScriptingManager.EvaluateAsync(...)` with a `CancellationToken`; it creates the scope, evaluates, and disposes the scope for you.
- If you create a scope yourself with `IScriptingEngine.CreateScope()`, dispose it in a `finally` (`(scope as IDisposable)?.Dispose()`) so the engine returns to the tenant's pool.
- Use `IGlobalMethodProvider` to register custom global methods as singletons.View the complete source on GitHuborchardcore-search-indexing
When your agent uses it
Skill for configuring search and indexing in Orchard Core. Covers unified IndexProfile definitions, Lucene, Elasticsearch, and Azure AI Search providers, provider configuration sections under OrchardCore Search, document index handlers, index lifecycle recipes, IndexingPermissions and SearchPermissions, keyed ISearchService resolution, the GET-only search page, and search queries. Use this skill when requests mention Orchard Core Search and Indexing, Configure Search and Indexing, Enabling Search Features, Index Profile Recipe, Elasticsearch Configuration, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.Lucene, OrchardCore.Elasticsearch, OrchardCore.AzureAI, OrchardCore.Search, OrchardCore.Indexing, IIndexProfileManager, ISearchService, IDocumentIndexHandler, BuildDocumentIndexContext, ContentIndexingConstants, IndexingPermissions, and custom content-part indexing.
What it loads into context
Frontmatter
210 tokensAlways available to the agent
SKILL.md
2,590 tokensWhen the skill is activated
Reference documents
920 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Search and Indexing
Files
SKILL.mdcore12,015 bytesSKILL.mdcore12,015 bytesSKILL.mdcore12,015 bytesreferences/search-indexing-examples.mddoc4,255 bytes
Read SKILL.md
# Orchard Core Search & Indexing - Prompt Templates
## Configure Search and Indexing
You are an Orchard Core expert. Generate search and indexing configurations for Orchard Core.
### Guidelines
- Orchard Core uses a unified `IndexProfile` for Lucene, Elasticsearch, and Azure AI Search indexes.
- Enable the required provider feature such as `OrchardCore.Lucene`, `OrchardCore.Elasticsearch`, or `OrchardCore.AzureAI`.
- Lucene indexes are stored on the local file system.
- Elasticsearch requires an external Elasticsearch cluster.
- Create indexes with the provider-agnostic `CreateOrUpdateIndexProfile` step.
- Use queries to search indexed content programmatically or via Liquid.View the complete source on GitHuborchardcore-search-providers
When your agent uses it
Skill for implementing custom search providers in Orchard Core. Covers provider module structure, index source contracts, index profile handlers, provider services, OrchardCore.Search integration, permissions with LocalizationSource descriptions, admin action authorization, API endpoint names, provider configuration sections under OrchardCore Search, settings-backed options with IOptionsMonitor and AddSignalOptionsChangeTokenSource, and custom provider implementations that follow OrchardCore.Elasticsearch. Use this skill when requests mention Orchard Core Search Providers, Create a new search provider, Implement custom search support, AddSearchService registration, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.Indexing, OrchardCore.Search, AddSearchService, AddIndexingSource, IIndexManager, IDocumentIndexManager, IIndexNameProvider, IndexProfileHandlerBase, ElasticsearchService, and AddElasticsearchServices.
What it loads into context
Frontmatter
207 tokensAlways available to the agent
SKILL.md
3,480 tokensWhen the skill is activated
Reference documents
1,184 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Implement a New Search Provider
- Security and Reliability Notes
Files
SKILL.mdcore17,852 bytesSKILL.mdcore17,852 bytesSKILL.mdcore17,852 bytesSKILL.mdcore17,852 bytesSKILL.mdcore17,852 bytesreferences/search-provider-examples.mddoc6,001 bytes
Read SKILL.md
# Orchard Core Search Providers
## Implement a New Search Provider
You are an Orchard Core expert. Generate code and configuration for implementing a new search provider module such as OpenSearch by following the current `OrchardCore.Elasticsearch` pattern.
### Guidelines
- Use the current provider pattern based on `OrchardCore.Elasticsearch`, not legacy feature aliases.
- Create a canonical feature ID such as `OrchardCore.OpenSearch`, not `OrchardCore.Search.OpenSearch`.
- Split provider concerns into clear registrations:
- core provider services and client factory
- index profile UI and handlers
- content indexing source registration under `OrchardCore.Contents`View the complete source on GitHuborchardcore-security
When your agent uses it
Skill for configuring security and authorization in Orchard Core. Covers declaring permissions with LocalizationSource descriptions, permission providers and stereotypes, IAuthorizationService checks, content authorization handlers, security headers through SecuritySettings and the OrchardCore Security configuration section, the Api authentication scheme, RFC 9457 Problem Details API error responses, anti-forgery, and the 4.0 removal of obsolete permission members. Use this skill when requests mention Orchard Core Security, permissions, authorization, security headers, CSP, Permissions-Policy, Api authentication scheme, Problem Details, 401 or 403 API responses, SkipStatusCodePages, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.Security, IPermissionProvider, Permission, PermissionStereotype, LocalizationSource, CommonPermissions, ConfigureSecuritySettings, and OrchardCoreConstants.AuthenticationSchemes.Api.
What it loads into context
Frontmatter
207 tokensAlways available to the agent
SKILL.md
2,574 tokensWhen the skill is activated
Reference documents
959 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Security and Authorization
Files
SKILL.mdcore12,112 bytesreferences/security-examples.mddoc4,096 bytes
Read SKILL.md
# Orchard Core Security - Prompt Templates
## Configure Security and Authorization
You are an Orchard Core expert. Generate security and authorization configurations for Orchard Core.
### Guidelines
- Orchard Core authorizes with permissions granted to roles. Check them with `IAuthorizationService.AuthorizeAsync(User, permission[, resource])`.
- Declare permissions as static fields on a `*Permissions` class (usually in an `Abstractions` or `Core` project, so other modules can reference them without depending on your module) and return them from an `IPermissionProvider`.
- `Permission.Description` is a `LocalizationSource` in 4.0. Create it with `LocalizationSource.Create("text", typeof(DeclaringType))` or `LocalizationSource.Create<DeclaringType>("text")` so the PO-file context is preserved. String descriptions still compile but are context-free.
- Mark dangerous permissions with `isSecurityCritical: true`.
- Content permissions (`ViewContent`, `EditContent`, `PublishContent`, `DeleteContent`, and their `Own` variants) live in `OrchardCore.Contents.CommonPermissions`; pass the content item as the resource so dynamic per-type permissions apply.
- `OrchardCore.Security` adds security headers configured from **Settings → Security → Security Headers** (permission `ManageSecurityHeadersSettings`).View the complete source on GitHuborchardcore-seo
When your agent uses it
Skill for configuring SEO in Orchard Core. Covers SeoMetaPart for meta tags and social sharing, SeoMetaPartSettings, SeoAspect fallbacks, SocialMetaSettings site defaults, canonical URLs, absolute and CDN social image URLs, robots.txt with RobotsSettings and IRobotsProvider, the ManageSeoSettings permission, JSON-LD structured data, page titles, and SEO-friendly URL patterns, plus how sitemaps fit in. Use this skill when requests mention Orchard Core SEO, SeoMetaPart, meta descriptions, Open Graph, Twitter cards, Google schema, canonical URLs, robots.txt, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include OrchardCore.Seo, OrchardCore.Seo.Models, SeoPermissions, SeoAspect, RobotsSettings, IRobotsProvider, OrchardCore.Sitemaps, and OrchardCore.Autoroute, plus migrations, recipes, and examples.
What it loads into context
Frontmatter
215 tokensAlways available to the agent
SKILL.md
3,283 tokensWhen the skill is activated
Reference documents
2,441 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure SEO Features
- SeoMetaPart Configuration
- Fallbacks and Site Defaults
- Canonical URLs
- Social Media Meta Tags
- Structured Data with JSON-LD
- Robots.txt
- Sitemaps
- SEO-Friendly URL Patterns with AutoroutePart
- Page Title Customization
- Custom Meta Tags in a Content Item Recipe
- Upgrading from 3.x
Files
SKILL.mdcore14,127 bytesreferences/seo-examples.mddoc10,857 bytes
Read SKILL.md
# Orchard Core SEO - Prompt Templates
## Configure SEO Features
You are an Orchard Core expert. Generate code and configuration for SEO optimization in Orchard Core.
### Guidelines
- The `OrchardCore.Seo` module provides `SeoMetaPart` for managing the page title, meta tags, canonical URL, Open Graph, Twitter Card, and Google schema (JSON-LD) per content item, plus a settings-driven `robots.txt`.
- The `OrchardCore.Sitemaps` module handles XML sitemap generation and sitemap indexes; see `orchardcore-sitemaps` for its recipe step format.
- Attach `SeoMetaPart` to any routable content type that needs meta tag control, alongside `AutoroutePart` for SEO-friendly URLs.
- SEO tags are rendered only for the primary content item displayed with the `Detail` display type, and never for widgets (stereotyped items).
- SEO settings (Robots) require the `ManageSeoSettings` permission (`OrchardCore.Seo.SeoPermissions.ManageSeoSettings`, granted to Administrator).
- Use recipe steps to provision SEO settings and sitemaps across environments.View the complete source on GitHuborchardcore-setup
When your agent uses it
Skill for creating and setting up Orchard Core web applications. Covers project creation, CMS module configuration, adding modules to the web project, running setup, setup recipe parameters and configuration keys, the OrchardCore Setup configuration section for setup cultures, auto setup, testing with the Blog recipe, and configuring tenants for multi-site testing. Use this skill when requests mention Orchard Core Setup, Create and Set Up an Orchard Core Application, Creating a New Orchard Core Web Application, Manual Project Setup (Without Templates), Program.cs Configuration, Program.cs with Additional CMS Configuration, setup recipe parameters, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.ProjectTemplates, OrchardCore.Application.Cms.Targets, OrchardCore.Setup, OrchardCore.AutoSetup. It also helps with setup examples and Adding CMS Modules to the Project.
What it loads into context
Frontmatter
202 tokensAlways available to the agent
SKILL.md
2,057 tokensWhen the skill is activated
Reference documents
897 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Create and Set Up an Orchard Core Application
Files
SKILL.mdcore8,671 bytesSKILL.mdcore8,671 bytesSKILL.mdcore8,671 bytesSKILL.mdcore8,671 bytesSKILL.mdcore8,671 bytesreferences/setup-examples.mddoc3,552 bytes
Read SKILL.md
# Orchard Core Setup - Prompt Templates
## Create and Set Up an Orchard Core Application
You are an Orchard Core expert. Generate project setup instructions and configuration for Orchard Core web applications.
### Guidelines
- Orchard Core applications are ASP.NET Core web apps that reference Orchard Core NuGet packages.
- Use the `dotnet new` templates or manual project creation.
- The `Program.cs` file configures Orchard Core services and middleware.
- Setup recipes (Blog, Agency, SaaS, Blank) define the initial site configuration.
- Database providers include Sqlite (default), SqlServer, PostgreSql, and MySql.
- CMS modules are added as NuGet package references in the `.csproj` file.View the complete source on GitHuborchardcore-shape-discovery
When your agent uses it
Skill for discovering rendered Orchard Core shapes and selecting safe frontend or admin theme overrides. Covers shape debug comments, bindings, alternates, differentiators, display types, field display modes, OrchardCore.Placements, OrchardCore.Templates, OrchardCore.AdminTemplates, OrchardCore.Liquid, shape rendering telemetry for finding slow shapes, and runtime visual theming workflows. Use when an AI must identify the exact shape behind existing HTML, find which shape or template is slow, create a targeted template or placement override, or redesign a running Orchard Core tenant without guessing shape names.
What it loads into context
Frontmatter
149 tokensAlways available to the agent
SKILL.md
3,221 tokensWhen the skill is activated
Reference documents
1,389 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Core Rules
- Runtime Feature Map
- Discovery Workflow
- Shape Names, Alternates, and Template Files
- Display Types and Display Modes
- Placement and Runtime Templates
- Common Failure Modes
- Related Skills and References
Files
SKILL.mdcore14,935 bytesSKILL.mdcore14,935 bytesSKILL.mdcore14,935 bytesSKILL.mdcore14,935 bytesreferences/runtime-discovery.mddoc5,917 bytes
Read SKILL.md
# Orchard Core Shape Discovery
Use this skill before changing the visual output of an existing Orchard Core site. The rendered page is the source of truth: discover the shape type and binding first, then select the least invasive override that can produce the requested design.
## Core Rules
- Orchard Core renders a tree of shapes, not a single MVC view or a block of HTML.
- Treat `type`, `bindings`, nesting, URL, content type, display type, and the active theme as evidence. Do not invent a shape name from a CSS class or a part name.
- A shape type, a binding, a template name, and a placement key are related but are not always identical.
- A binding identifies the template or code that rendered the shape. The logical shape type identifies the shape used by placement and binding resolution.
- A repeated shape type can represent different fields or parts. Use the differentiator, surrounding shape tree, content definition, and request context to distinguish instances.
- Prefer a specific alternate or wrapper over replacing a generic template. Preserve child zones by rendering them when the design only changes the container.
- Use placement to move or hide output. Do not create an empty template to hide a shape.
- Keep shape debugging enabled only during development or controlled staging work. Debug comments expose implementation details in the response.View the complete source on GitHuborchardcore-shapes
When your agent uses it
Skill for working with shapes in Orchard Core's display management system. Covers shape creation, Liquid and Razor shape templates, template file naming and canonical shape names, alternates and their priority, wrappers and ChildContent, shape metadata, ad-hoc and strongly typed shapes, IShapeFactory, IShapeTableProvider, IShapeAttributeProvider code bindings, layouts and zones, item positions including start and end sentinels, DisplayAsAsync, IShapeHtmlRenderer, and rendering shapes in Liquid. Use this skill when requests mention Orchard Core Shapes, Working with Shapes, How Shapes Work, Shape Metadata, Creating Shape Templates, Liquid Shape Template (Views/Content.liquid), alternates not being picked, wrappers, zones, or related troubleshooting. Strong matches include OrchardCore.DisplayManagement, IShapeFactory, IShapeTableProvider, IDisplayHelper, IShapeHtmlRenderer, ShapeMetadata, IDisplayManager, IDisplayResult, TextField, TitlePart, HtmlBodyPart.
What it loads into context
Frontmatter
228 tokensAlways available to the agent
SKILL.md
5,247 tokensWhen the skill is activated
Reference documents
1,926 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Working with Shapes
- How Shapes Work
- Template File Names
- Creating Shape Templates
- Shape Alternates
- Rendering Shapes in Liquid Templates
- Rendering Shapes in Razor Templates
- Creating Shapes from Code
- Shape Table Providers
- Shape Wrapper Templates
- Code Bindings with `[Shape]`
- Layouts, Zones, and Item Positions
- Common Shape Types Reference
- Overriding Built-In Shape Templates
- Shape Debug Information
Files
SKILL.mdcore22,594 bytesSKILL.mdcore22,594 bytesSKILL.mdcore22,594 bytesreferences/shapes-examples.mddoc8,618 bytes
Read SKILL.md
# Orchard Core Shapes - Prompt Templates
## Working with Shapes
You are an Orchard Core expert. Generate shape templates, shape providers, and shape-related code for Orchard Core.
### Guidelines
- Shapes are the fundamental rendering unit in Orchard Core's display management.
- Every piece of visible output is rendered through a shape.
- Shapes have a type name (e.g., `Content`, `Widget`, `TextField`), metadata, and properties.
- Shape templates can be written in Liquid (`.liquid`) or Razor (`.cshtml`). Both use the same file naming rules.
- Use canonical names (`_` and `__`) in C#, `placement.json`, and shape metadata. Use dots and hyphens only in template file names.
- For `DisplayDriver<T>.Edit()` flows, remember the root editor shape for the model type as well as any nested field/editor shapes. If `BuildEditorAsync()` is used for `TableauExportPipeline`, Orchard will resolve a root `TableauExportPipeline_Edit` shape in addition to shapes like `TableauExportPipelineFields_Edit`.View the complete source on GitHuborchardcore-shells
When your agent uses it
Skill for Orchard Core shells and shell configuration providers. Covers ShellSettings, ShellContext, ShellScope, IShellHost and IShellSettingsManager, per-tenant dependency injection, running code in a shell scope with deferred tasks, reloading and releasing shells, Azure Blob shell configuration for cloud deployments (including Azure Storage accounts with Hierarchical Namespace, ADLS Gen2), database shell configuration for multi-instance scenarios, the OrchardCore Shells Azure and Shells Database configuration sections, migration from file-based to cloud/database providers, and environment-specific settings. Use this skill when requests mention Orchard Core Shells, ShellScope, running code in a tenant, Azure Blob or Database Shell Configuration, UseHierarchicalNamespace, or related troubleshooting. Strong matches include OrchardCore.Shells.Azure, AddAzureShellsConfiguration, AddDatabaseShellsConfiguration, BlobShellStorageOptions, DatabaseShellsStorageOptions, ShellScope, IShellHost, tenants.json.
What it loads into context
Frontmatter
221 tokensAlways available to the agent
SKILL.md
3,364 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Shell Providers for Multi-Tenant Environments
- Shells, Contexts and Scopes
Files
SKILL.mdcore14,939 bytes
Read SKILL.md
# Orchard Core Shells Configuration - Prompt Templates
## Configure Shell Providers for Multi-Tenant Environments
You are an Orchard Core expert. Generate configuration and code for Azure Blob shell storage, database shell storage, migration from file-based providers, and environment-specific shell settings.
### Guidelines
- By default, Orchard Core stores `tenants.json` and per-tenant `appsettings.json` in the `App_Data` folder.
- For stateless multi-instance deployments, use Azure Blob or Database shell configuration providers.
- Shell providers enable multiple hosts to share and mutate tenant configuration in a central store.
- Azure Blob provider stores files in a blob container hierarchy similar to `App_Data`.
- Database provider stores all tenant configuration as a single JSON document in a supported database.
- Both providers support `MigrateFromFiles` to automatically migrate existing `App_Data` configuration.View the complete source on GitHuborchardcore-shortcodes
When your agent uses it
Skill for creating and using shortcodes in Orchard Core. Covers shortcode template creation via admin UI, the ShortcodeTemplates recipe step and deployment step, the ManageShortcodeTemplates permission, code-based shortcode providers using delegate and class patterns, built-in shortcodes (image, asset_url, locale), and shortcode rendering before final HTML sanitization in HTML and Markdown parts and fields. Use this skill when requests mention Orchard Core Shortcodes, Create and Use Shortcodes, Enabling Shortcodes, Shortcode Templates (Admin UI), Template Arguments, Example [display_text] Template or closely related Orchard Core work. Strong matches include work with OrchardCore.Shortcodes, OrchardCore.Shortcodes.Templates, OrchardCore.Localization, IShortcodeProvider, HtmlBodyPart, HtmlField, MarkdownBodyPart, MarkdownField, IServiceCollection, AlertShortcodeProvider.
What it loads into context
Frontmatter
201 tokensAlways available to the agent
SKILL.md
2,376 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Create and Use Shortcodes
Files
SKILL.mdcore10,949 bytesSKILL.mdcore10,949 bytes
Read SKILL.md
# Orchard Core Shortcodes - Prompt Templates
## Create and Use Shortcodes
You are an Orchard Core expert. Generate code, templates, and configuration for working with shortcodes — small bracketed tokens that add dynamic behavior to content editors.
### Guidelines
- Shortcodes are tokens wrapped in `[brackets]` that inject dynamic content into HTML or Markdown fields.
- Enable the `OrchardCore.Shortcodes` feature to use shortcodes; enable `OrchardCore.Shortcodes.Templates` for admin-managed templates.
- Shortcode templates created in the admin UI (_Design → Shortcodes_) use Liquid syntax.
- Admin-created shortcode templates can override code-based shortcodes with the same name.
- Managing shortcode templates requires `OrchardCore.Shortcodes.ShortcodesPermissions.ManageShortcodeTemplates` (the old `OrchardCore.Shortcodes.Permissions.ManageShortcodeTemplates` member was removed in 4.0).
- Code-based shortcodes are registered using `ShortcodeDelegate` (inline lambda) or `IShortcodeProvider` (class-based).View the complete source on GitHuborchardcore-site-settings
When your agent uses it
Skill for accessing and extending Orchard Core site settings. Covers ISiteService, ISite built-in properties, General settings with page size selection, code-defined settings groups with SiteDisplayDriver, per-group permissions with AddSiteSettingsPermission and SettingsPermissions, options built from site settings that refresh without a shell release through IOptionsMonitor and IOptionsUpdateNotifier, tenant reload with IShellReleaseManager, Liquid Site accessor and PermittedSiteProperties, the Settings recipe step, and deployment steps. Use this skill when requests mention Orchard Core Site Settings, Reading or Updating Site Settings, Creating a Settings Group, settings-backed options, Page Size Selection, or closely related Orchard Core implementation, upgrade, or troubleshooting work. Strong matches include OrchardCore.Settings, ISiteService, SiteDisplayDriver, ManageGeneralSettings, AddSiteSettingsPermission, AddSignalOptionsChangeTokenSource, PagerOptions, SettingsLiquidOptions.
What it loads into context
Frontmatter
211 tokensAlways available to the agent
SKILL.md
5,019 tokensWhen the skill is activated
Reference documents
3,236 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Access and Extend Site Settings
Files
SKILL.mdcore23,044 bytesSKILL.mdcore23,044 bytesreferences/site-settings-examples.mddoc15,112 bytes
Read SKILL.md
# Orchard Core Site Settings - Prompt Templates
## Access and Extend Site Settings
You are an Orchard Core expert. Generate code and configuration for reading site settings, adding code-defined settings groups to the admin, and feeding options from site settings.
### Guidelines
- `OrchardCore.Settings` is always enabled. Site settings are a single per-tenant document (`ISite`); modules add their own sections to its `Properties` bag.
- Use `ISiteService.GetSiteSettingsAsync()` (cached, read-only) to read; use `LoadSiteSettingsAsync()` before modifying and saving with `UpdateSiteSettingsAsync()`.
- Read a section with `site.TryGet<TSettings>(out var settings)` or `site.GetOrCreate<TSettings>()`; `site.As<T>()` is obsolete. `ISiteService.GetSettingsAsync<T>()` is a shortcut.
- A code-defined settings group is a plain POCO class (not a `ContentPart`) edited by a `SiteDisplayDriver<TSettings>` with a unique `SettingsGroupId`.
- Register a permission for the group with `AddSiteSettingsPermission(groupId, permission)` **and** check that permission in both `EditAsync` and `UpdateAsync` of the driver.
- When services consume the settings through options, prefer the 4.0 `IOptionsMonitor<TOptions>` refresh pipeline over a shell release: register `AddSignalOptionsChangeTokenSource<TOptions>()`, call `IOptionsUpdateNotifier.RequestUpdate<TOptions>()` from the driver, and read `IOptionsMonitor<TOptions>.CurrentValue`.View the complete source on GitHuborchardcore-sitemaps
When your agent uses it
Skill for configuring sitemaps in Orchard Core. Covers sitemaps with content type and custom path sources, SitemapPart per-item control, localized hreflang sitemaps, sitemap indexes, the Sitemaps recipe and deployment step with type discriminators, caching and the cache cleanup task, robots.txt integration with SitemapsRobotsSettings, the ManageSitemaps permission, IRouteableContentTypeProvider, and decoupled Razor Pages. Use this skill when requests mention Orchard Core Sitemaps, sitemap.xml, sitemap indexes, Skip and Take sitemap splitting, change frequency, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include OrchardCore.Sitemaps, OrchardCore.Sitemaps.RazorPages, OrchardCore.Sitemaps.Cleanup, OrchardCore.ContentLocalization.Sitemaps, SitemapsPermissions, ContentTypesSitemapSource, CustomPathSitemapSource, SitemapIndexSource, SitemapPart, and SitemapsRazorPagesOptions.
What it loads into context
Frontmatter
235 tokensAlways available to the agent
SKILL.md
3,247 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Sitemaps and Sitemap Indexes
Files
SKILL.mdcore13,842 bytesSKILL.mdcore13,842 bytes
Read SKILL.md
# Orchard Core Sitemaps - Prompt Templates
## Configure Sitemaps and Sitemap Indexes
You are an Orchard Core expert. Generate sitemap configurations, sitemap index setups, and SitemapPart configurations for Orchard Core.
### Guidelines
- Enable `OrchardCore.Sitemaps` (depends on `OrchardCore.Contents`) for XML sitemap generation. Manage them under **Tools > Search Engine Optimization > Sitemaps / Sitemap Indexes / Sitemaps Cache**; this requires the `ManageSitemaps` permission (`SitemapsPermissions.ManageSitemaps`).
- Sitemaps are configured by creating a Sitemap and adding **Sitemap Sources**: **Content Types** (`ContentTypesSitemapSource`) or **Custom Path** (`CustomPathSitemapSource`) for a fixed URL.
- Sitemap paths must end in `.xml` (e.g., `sitemap.xml`) and are unique; the admin validates this, recipes do not, so always use `.xml` in recipes too.
- Only content types with `AutoroutePart` are listed for inclusion by default. To include content routed another way, implement `IRouteableContentTypeProvider`.
- Add `SitemapPart` to a content type for per-item control (override priority, change frequency, or exclude items). It is optional.
- Priority is stored as an integer `0`-`10` (`5` renders as `0.5`).View the complete source on GitHuborchardcore-sms
When your agent uses it
Skill for configuring SMS messaging in Orchard Core. Covers SMS provider setup (Log, Twilio, Azure Communication Services), SmsSettings and TwilioSettings recipes, ISmsService and SmsMessage for programmatic sending including the From number, custom ISmsProvider implementation, SmsProviderOptions and TwilioOptions read through IOptionsMonitor, the SMS Task workflow activity with its From Phone Number option, SMS notifications, the Twilio health check, and SmsPermissions. Use this skill when requests mention Orchard Core SMS, Configure and Send SMS Messages, Available SMS Providers, Enabling SMS Features, Configuring Twilio, Configuring Azure Communication Services via Admin UI, custom SMS provider, AddSmsProvider, AddSmsProviderOptionsConfiguration, upgrading SMS code to Orchard Core 4, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include OrchardCore.Sms, OrchardCore.Sms.Azure, and OrchardCore.Notifications.Sms.
What it loads into context
Frontmatter
223 tokensAlways available to the agent
SKILL.md
2,235 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Available SMS Providers
- Enable and Configure Twilio
- Sending SMS Programmatically
- Creating a Custom SMS Provider (Simple)
- Creating a Custom SMS Provider (Settings-backed)
- Workflow SMS Activity
- SMS Notifications
- Health Checks
- Upgrading from 3.x
Files
SKILL.mdcore9,845 bytes
Read SKILL.md
# Orchard Core SMS
## Guidelines
- Enable `OrchardCore.Sms` to get **Settings → Communication → SMS**, guarded by
`OrchardCore.Sms.SmsPermissions.ManageSmsSettings`.
- Configure and select a default provider before sending; until then
`ISmsService` returns a failed `Result`.
- Use `ISmsService` to send; implement `ISmsProvider` for new providers.
- `SmsProviderOptions`, `TwilioOptions`, and `AzureSmsOptions` are refreshed from
site settings without a shell release; read them with
`IOptionsMonitor<T>.CurrentValue`.
- All recipe JSON must be wrapped in `{ "steps": [...] }`.
- All C# classes must use the `sealed` modifier, except for View Models.View the complete source on GitHuborchardcore-sms-azure
When your agent uses it
Skill for configuring Azure Communication Services SMS in Orchard Core. Covers AzureSmsSettings, AzureSmsOptions, DefaultAzureSmsOptions, AzureSmsProvider, DefaultAzureSmsProvider, AzureSmsProviderBase, the OrchardCore Sms Azure configuration section, IOptionsMonitor refresh, encrypted connection strings, provider selection, configuration-backed defaults, the From number, and base SMS sending abstractions. Use this skill when requests mention Orchard Core Azure SMS, Azure Communication Services SMS, AzureSmsSettings, AzureSmsProvider, DefaultAzureSmsOptions, ACS text messaging, upgrading Azure SMS configuration to Orchard Core 4, or closely related Orchard Core implementation setup extension or troubleshooting work. Strong matches include work with OrchardCore.Sms.Azure, OrchardCore.Sms, ISmsService, ISmsProvider, AddAzureSmsProvider, and AzureSettingsDisplayDriver.
What it loads into context
Frontmatter
200 tokensAlways available to the agent
SKILL.md
1,489 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Enable Azure SMS
- Configure Per Tenant
- Configure the Default Azure Provider
- Send With ISmsService
- Integrate Workflows and Notifications
- Diagnose Delivery
- Provider Selection Notes
- Upgrading from 3.x
Files
SKILL.mdcore6,755 bytesSKILL.mdcore6,755 bytes
Read SKILL.md
# Orchard Core Azure Communication Services SMS
`OrchardCore.Sms.Azure` adds Azure Communication Services as a provider for the
base `OrchardCore.Sms` module (see `orchardcore-sms`). It supplies tenant
settings and a configuration-backed default provider. Use the base
`ISmsService` from application code so another provider can be selected later
without rewriting the sending service.
## Guidelines
- `OrchardCore.Sms.Azure` depends on `OrchardCore.Sms`.
- Select a configured and enabled SMS provider before attempting delivery.
- Configure an ACS connection string and a phone number capable of sending SMS.
- `AzureSmsProvider` (`Azure`) is the tenant-configured provider;View the complete source on GitHuborchardcore-source-generators
When your agent uses it
Skill for using Orchard Core source generators and build-time analyzers. Covers the GenerateArguments attribute for compile-time named argument types, anonymous type interceptors for .NET 9+, PropertyBasedNamedEnumerable, the GenerateShape attribute and shape factory interceptors that avoid runtime proxies, the OCSG001 analyzer for sealed shape models, the OCSG002 analyzer for FeatureAttribute targets outside the current module, migration from anonymous to named types, and performance optimization. Use this skill when requests mention Orchard Core Source Generators, [GenerateArguments], What Gets Generated, OCSG001, OCSG002, sealed view model warning, Feature attribute ignored, or closely related Orchard Core troubleshooting work. Strong matches include OrchardCore.SourceGenerators, OrchardCore.DisplayManagement, INamedEnumerable, [GenerateShape], FeatureAttribute, RequireFeatures, Initialize, CreateAsync.
What it loads into context
Frontmatter
205 tokensAlways available to the agent
SKILL.md
2,410 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Use Source Generators for Performance Optimization
Files
SKILL.mdcore10,794 bytesSKILL.mdcore10,794 bytesSKILL.mdcore10,794 bytesSKILL.mdcore10,794 bytes
Read SKILL.md
# Orchard Core Source Generators - Prompt Templates
## Use Source Generators for Performance Optimization
You are an Orchard Core expert. Generate code using source generators, the `[GenerateArguments]` attribute, anonymous type interceptors, and named argument types for shapes and display management.
### Guidelines
- Use `[GenerateArguments]` on `partial` classes to generate optimized `INamedEnumerable<object>` implementations at compile time.
- Generated classes extend `PropertyBasedNamedEnumerable` with zero-reflection property access via switch expressions.
- Classes marked with `[GenerateArguments]` must be `partial` and have at least one public instance property with a getter.
- For .NET 9+ projects, anonymous types passed to `Arguments.From()` are automatically optimized by interceptors.
- On older .NET versions, `Arguments.From()` falls back to cached reflection (acceptable for infrequent usage).
- Prefer named types with `[GenerateArguments]` for production code over anonymous types.View the complete source on GitHuborchardcore-spatial
When your agent uses it
Skill for working with geographic and spatial data in Orchard Core. Covers GeoPointField for location storage, standard and Leaflet map editors, culture-invariant latitude and longitude values, GraphQL, Lucene and Elasticsearch geo indexing with the shared Location field, geo-bounding-box queries, geo-distance queries with the Haversine formula, combined spatial queries, and geographic content filtering patterns. Use this skill when requests mention Orchard Core Spatial, GeoPointField, maps, store locators, latitude and longitude, geo bounding box or geo distance queries, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include OrchardCore.Spatial, GeoPointField, ContentDefinition recipes, geo_bounding_box, geo_distance, and distance units, plus the query patterns captured in this skill.
What it loads into context
Frontmatter
194 tokensAlways available to the agent
SKILL.md
2,266 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Work with Geographic and Spatial Data
Files
SKILL.mdcore10,874 bytes
Read SKILL.md
# Orchard Core Spatial - Prompt Templates
## Work with Geographic and Spatial Data
You are an Orchard Core expert. Generate code and queries for spatial data including GeoPointField usage, geo-bounding-box queries, geo-distance queries, and combined spatial filtering with Lucene.
### Guidelines
- Enable `OrchardCore.Spatial` to add the `GeoPointField` content field. The module depends on `OrchardCore.ContentTypes` and `OrchardCore.Lucene`, so enabling it also enables Lucene.
- `GeoPointField` (`OrchardCore.Spatial.Fields`) stores `decimal? Latitude` and `decimal? Longitude`. `GeoPointFieldSettings` only has the standard `Hint` and `Required` settings.
- Editors: the default editor (two inputs) and `Leaflet` (an interactive OpenStreetMap map; it sends a referrer so tiles load). Values are parsed and rendered with the invariant culture, so always use `.` as the decimal separator.
- The index handler writes the point under `{PartName}.{FieldName}` and also under a shared `Location` key, so one query can search several content types. Lucene stores the point as culture-invariant `lat,lon` text (fixed in 4.0, cultures with a `,` decimal separator used to corrupt it).
- Use `geo_bounding_box` queries for fast area-based filtering without distance calculation.
- Use `geo_distance` queries for precise radius-based filtering using the Haversine formula.View the complete source on GitHuborchardcore-sql-indexing
When your agent uses it
Skill for using SQL-based content indexing in Orchard Core. Covers content item indexing tables, field indexing tables, database schema reference, the ContentItemIndex SQL indexes including IDX_ContentItemIndex_ContentItemId, querying indexed data with C#, Razor views, Liquid templates, saved SQL queries and GraphQL, and SQL indexing performance patterns. Use this skill when requests mention Orchard Core SQL Indexing, Query SQL-Indexed Content, Enabling SQL Field Indexing, ContentItemIndex Schema, LocalizedContentItemIndex Schema, Content Field Index Tables, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.ContentFields.Indexing.SQL, OrchardCore.ContentManagement, ContentItemIndex, ISession, LocalizedContentItemIndex, ContentPart, ContentField, BooleanFieldIndex, TextFieldIndex, NumericFieldIndex, ContentPickerFieldIndex.
What it loads into context
Frontmatter
212 tokensAlways available to the agent
SKILL.md
2,346 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Query SQL-Indexed Content
Files
SKILL.mdcore9,537 bytes
Read SKILL.md
# Orchard Core SQL Indexing - Prompt Templates
## Query SQL-Indexed Content
You are an Orchard Core expert. Generate code for querying SQL-indexed content in Orchard Core using YesSql sessions, Razor views, Liquid templates, and GraphQL.
### Guidelines
- The `ContentItemIndex` table is always available and indexes core content item fields.
- Enable `OrchardCore.ContentFields.Indexing.SQL` to create SQL index tables for content fields (Boolean, Text, Numeric, Date, etc.).
- Use `ISession.Query<ContentItem, TIndex>()` in C# to query indexed data.
- Use `@inject ISession Session` in Razor views to access query capabilities.
- In Liquid, create a SQL Query in Orchard Core admin and use `Queries.QueryName | query` to retrieve records.
- Dates are stored as UTC — convert to local time when displaying.View the complete source on GitHuborchardcore-startup-code
When your agent uses it
Skill for running initialization code on tenant startup in Orchard Core. Covers IModularTenantEvents and ModularTenantEvents, the ActivatingAsync, ActivatedAsync, TerminatingAsync, TerminatedAsync and RemovingAsync hooks, tenant lazy-loading and the BackgroundService ShellWarmup setting, uninitialized tenant checks, preloading data for synchronous access, RequiredStartup components, and module initialization best practices. Use this skill when requests mention Orchard Core Startup Code, Run Code on Tenant Startup, Registering a Startup Task, Seeding Default Data on Tenant Start, warming up tenants, or closely related Orchard Core implementation or troubleshooting work. Strong matches include OrchardCore.Modules, IModularTenantEvents, ModularTenantEvents, ShellSettings, IsUninitialized, ShellScope, IContentManager, ILogger.
What it loads into context
Frontmatter
190 tokensAlways available to the agent
SKILL.md
2,134 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Run Code on Tenant Startup
Files
SKILL.mdcore10,461 bytes
Read SKILL.md
# Orchard Core Startup Code - Prompt Templates
## Run Code on Tenant Startup
You are an Orchard Core expert. Generate code for running initialization tasks when a tenant starts, using the `IModularTenantEvents` interface and `ModularTenantEvents` base class.
### Guidelines
- Implement `IModularTenantEvents` or inherit from `ModularTenantEvents` to run code on tenant activation.
- `ActivatingAsync` is called when a tenant is first hit (lazy-loaded) — use it for initialization logic.
- `ActivatedAsync` is called after all `ActivatingAsync` handlers have completed — use it for post-initialization logic.
- Tenants are **lazy-loaded**: event handlers are NOT invoked at application start — they run on the first request to the tenant, and again each time the shell is rebuilt (after a feature change or a shell release). Set `OrchardCore:BackgroundService:ShellWarmup` to `true` to build shells at startup (the 3.x section name was `OrchardCore_BackgroundService`).
- Handlers also run for **uninitialized** tenants (not set up yet), where `ISession`, `ISiteService` and content services cannot be used; check `ShellSettings.IsUninitialized()` first.
- `ActivatingAsync` events are invoked in module dependency order (based on the module dependency graph).View the complete source on GitHuborchardcore-taxonomies
When your agent uses it
Skill for creating and managing taxonomies in Orchard Core. Covers taxonomies and hierarchical terms, TaxonomyField settings, the Tags editor and TagNames, Term and TermItem shapes, routable taxonomies and term listings, TaxonomyIndex queries, Orchard helpers, Liquid filters, admin contents list taxonomy filters, the ManageTaxonomy permission, and IContentsTaxonomyListFilter. Use this skill when requests mention Orchard Core Taxonomies, categories, tags, terms, TaxonomyField, taxonomy_terms, inherited_terms, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include OrchardCore.Taxonomies, OrchardCore.Taxonomies.ContentsAdminList, TaxonomyField, TaxonomyPart, TermPart, TaxonomyIndex, TaxonomyFieldSettings, AliasPart, and QueryCategorizedContentItemsAsync, plus migrations, recipes, and examples.
What it loads into context
Frontmatter
209 tokensAlways available to the agent
SKILL.md
2,579 tokensWhen the skill is activated
Reference documents
1,031 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Create and Manage Taxonomies
Files
SKILL.mdcore10,829 bytesreferences/taxonomy-examples.mddoc4,734 bytes
Read SKILL.md
# Orchard Core Taxonomies - Prompt Templates
## Create and Manage Taxonomies
You are an Orchard Core expert. Generate taxonomy definitions, terms, and taxonomy field configurations.
### Guidelines
- Enable `OrchardCore.Taxonomies` to use taxonomy features.
- A Taxonomy is a content item of type `Taxonomy` that contains terms.
- Terms are hierarchical content items within a taxonomy.
- Use `TaxonomyField` on content types to allow categorization.
- Taxonomies can be flat (tags) or hierarchical (categories).
- Terms can have custom content parts and fields.View the complete source on GitHuborchardcore-temp-file-storage
When your agent uses it
Skill for configuring and using Orchard Core 4.0 temporary file storage. Covers ITempDirectoryProvider, DefaultTempDirectoryProvider, the OrchardCore TempDirectory Path setting, tenant-scoped temporary directories, mounting Azure Files, AWS EFS or FSx and SMB or NFS shares, multi-instance TUS resumable uploads, ITusTempStore blob and S3 stores, consuming GetRootDirectory, GetTempFileName and CreateTempSubdirectory from module code, and replacing the default provider. Use this skill when requests mention Orchard Core temporary files, temp directory, Path.GetTempPath, disk full during uploads, TUS uploads across instances, MediaOptions TusTempPath, chunked uploads, deployment import temp files, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.FileStorage, ITempDirectoryProvider, DefaultTempDirectoryProvider, TempDirectoryOptions, OrchardCore.Media.Tus, and ITusTempStore.
What it loads into context
Frontmatter
230 tokensAlways available to the agent
SKILL.md
2,081 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Relocate and Use Temporary File Storage
Files
SKILL.mdcore9,292 bytesSKILL.mdcore9,292 bytesSKILL.mdcore9,292 bytes
Read SKILL.md
# Orchard Core Temporary File Storage - Prompt Templates
## Relocate and Use Temporary File Storage
You are an Orchard Core expert. Generate configuration and code for Orchard Core's shared temporary file storage.
### Guidelines
- Orchard Core 4.0 writes temporary files through `ITempDirectoryProvider` (namespace `OrchardCore.FileStorage`, package `OrchardCore.Infrastructure.Abstractions`): in-progress media chunked uploads, TUS resumable uploads, deployment and recipe import/export archives (local and remote), workflow type import/export, recipes written to disk before tenant setup (tenant API recipe uploads), PDF text extraction for media indexing, and ClamAV buffering of non-seekable uploads.
- The default `DefaultTempDirectoryProvider` stores files under `{Path}/{TenantName}/...`. The tenant sub-directory is added automatically; never compose it yourself. Tenants cannot see or collide with each other's files.
- Configure the base path with `OrchardCore:TempDirectory:Path` (bound to `TempDirectoryOptions`). When it is omitted, `Path.GetTempPath()` is used, which matches the previous behavior.
- On Unix-like systems, new tenant directories get owner-only permissions (`700`), like `Directory.CreateTempSubdirectory()`.
- Why it exists: the OS temporary volume is often small (system disks, ephemeral container disks) and could fill up under concurrent large uploads. A configurable path can also be a shared volume, so an upload started on one instance can be completed on another.
- Point `Path` at a mounted file share (local disk, SAN/NAS, Azure Files over SMB, AWS EFS/FSx over NFS), never at object storage. Consumers need seekable local files (`Seek`/`SetLength`, `ZipFile.ExtractToDirectory`, `PhysicalFileProvider`).View the complete source on GitHuborchardcore-templates
When your agent uses it
Skill for customizing templates in Orchard Core via the admin UI. Covers shape template overrides, content type templates, content part templates, content field templates, differentiated display types, Liquid template syntax, admin template editing, the Templates and AdminTemplates recipe steps, template deployment steps, the ManageTemplates, ManageAdminTemplates and ManageLiquidTemplates permissions, Liquid shape template rendering, and template precedence rules. Use this skill when requests mention Orchard Core Templates, Admin Templates, Customizing Templates in Orchard Core, Content Type Templates, Widget Templates, Content Part Templates, Custom Model Shape Templates, template previews or closely related Orchard Core work. Strong matches include work with OrchardCore.Templates, OrchardCore.AdminTemplates, OrchardCore.Users, AliasPart, AutoroutePart, HtmlBodyPart, BagPart, TextField, ListPart, TitlePart, SummaryAdmin, CampaignAction_Edit.
What it loads into context
Frontmatter
204 tokensAlways available to the agent
SKILL.md
3,381 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Customizing Templates in Orchard Core
Files
SKILL.mdcore15,625 bytesSKILL.mdcore15,625 bytes
Read SKILL.md
# Orchard Core Templates - Prompt Templates
## Customizing Templates in Orchard Core
You are an Orchard Core expert. Generate template overrides and explain template naming conventions for Orchard Core shapes.
### Guidelines
- The `OrchardCore.Templates` module allows creating custom Liquid templates via the admin web editor.
- Orchard Core renders **Shapes**, not HTML directly. Each shape has a type and a list of **alternates** — potential template names.
- Templates can be defined in the admin UI or in theme files. Admin templates take precedence over theme files.
- Template names use `__` (double underscore) as a separator for specificity levels.
- In file-based themes, `__` in template names maps to `-` in filenames, and `_` before display type maps to `.` (e.g., `Content_Summary__BlogPost` → `Content-BlogPost.Summary.cshtml`).
- Display types include `Detail` (default for full page), `Summary` (lists), `SummaryAdmin` (admin lists), etc.View the complete source on GitHuborchardcore-tenants
When your agent uses it
Skill for configuring multi-tenancy in Orchard Core. Covers tenant creation in the admin, the API and code (IShellSettingsManager, UpdateShellSettingsAsync, ShellSettings keys, ISetupService), tenant states, running code in a tenant or in every running tenant, SaaS setup, tenant configuration, the Tenants API, the tenant workflow activities and ITenantValidator validation, feature profiles, tenant removal, generated table prefixes and schemas, and testing with tenants using different recipes. Use this skill when requests mention Orchard Core Tenants, Multi-Tenancy, the SaaS Recipe, creating a tenant, CreateTenantTask, Feature Profiles, TenantsOptions, the OrchardCore Tenants configuration section, or closely related setup or troubleshooting work. Strong matches include OrchardCore.Tenants, OrchardCore.Tenants.FeatureProfiles, OrchardCore.Environment.Shell, OrchardCore.Environment.Shell.Scope, ShellSettings, IShellHost, ITenantValidator, TablePrefixPattern, SchemaPattern, IShellSettingsManager, TenantState.
What it loads into context
Frontmatter
236 tokensAlways available to the agent
SKILL.md
3,487 tokensWhen the skill is activated
Reference documents
735 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure Multi-Tenancy
Files
SKILL.mdcore14,851 bytesSKILL.mdcore14,851 bytesSKILL.mdcore14,851 bytesSKILL.mdcore14,851 bytesSKILL.mdcore14,851 bytesreferences/tenants-examples.mddoc2,981 bytes
Read SKILL.md
# Orchard Core Tenants - Prompt Templates
## Configure Multi-Tenancy
You are an Orchard Core expert. Generate tenant configurations and multi-tenancy setup for Orchard Core.
### Guidelines
- Orchard Core supports multi-tenancy natively; the SaaS setup recipe enables tenant management on the Default tenant.
- Each tenant is an isolated site sharing the same application instance.
- Tenants can have separate databases or share a database with table prefix isolation, or with a separate schema when the provider supports schemas.
- The `Default` tenant is the main shell that manages other tenants. Enable `OrchardCore.Tenants` on it to manage tenants under **Multi-Tenancy → Tenants** (`ManageTenants` permission).
- Tenants can use any setup recipe (Blog, Agency, Blank, custom).
- URL prefixes or hostnames route requests to the correct tenant.View the complete source on GitHuborchardcore-tester
When your agent uses it
Tests a site built on Orchard Core through browser automation with playwright-cli. Use when the user needs to build, run, set up, or test an Orchard Core web project and its modules and themes. Covers running the site on a random port in the background, unattended provisioning with Auto Setup environment variables, the interactive setup wizard, the password field workaround for setup and login forms, playwright-cli browser installation and eval rules, log files, and the Orchard Core 4.0 admin UI including the redesigned admin menu, breadcrumb page titles, the Ctrl+K quick navigation palette, List and Grid admin list layouts, page size selection, and admin pages without jQuery. Use this skill when requests mention Orchard Core feature testing, running the site in the background, Auto Setup for tests, the setup wizard, or related testing or troubleshooting work. Strong matches include OrchardCore.Cms.Web, OrchardCore.AutoSetup, AddSetupFeatures, playwright-cli.
What it loads into context
Frontmatter
221 tokensAlways available to the agent
SKILL.md
3,261 tokensWhen the skill is activated
Reference documents
7,048 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Prerequisites
- Core Workflow
- Fastest Reliable Path (bash)
- Step 1: Build
- Step 2: Run Application (Background)
- Step 3: Setup Test Site
- Step 4: Test Features
- Step 5: Verify Results
- Quick Reference
- Session Files
- Default Credentials
- References
Files
SKILL.mdcore12,868 bytesSKILL.mdcore12,868 bytesSKILL.mdcore12,868 bytesSKILL.mdcore12,868 bytesSKILL.mdcore12,868 bytesSKILL.mdcore12,868 bytesSKILL.mdcore12,868 bytesSKILL.mdcore12,868 bytesSKILL.mdcore12,868 bytesSKILL.mdcore12,868 bytesSKILL.mdcore12,868 bytesSKILL.mdcore12,868 bytesSKILL.mdcore12,868 bytesSKILL.mdcore12,868 bytesSKILL.mdcore12,868 bytesSKILL.mdcore12,868 bytesSKILL.mdcore12,868 bytesSKILL.mdcore12,868 bytesreferences/admin-navigation.mddoc6,968 bytesreferences/autosetup.mddoc5,224 bytesreferences/common-features.mddoc5,083 bytesreferences/debugging.mddoc3,018 bytesreferences/playwright-cli.mddoc2,809 bytesreferences/setup-wizard.mddoc5,162 bytes
Read SKILL.md
# Orchard Core Feature Testing
This skill guides you through testing a site built on Orchard Core (its web project plus your modules and themes) using browser automation with `playwright-cli`.
## Prerequisites
- An Orchard Core web (startup) project, for example one created with `dotnet new occms`. Below it is `$webProject` (PowerShell) or `$WEB_PROJECT` (bash), such as `src/MySite.Web`. Inside the Orchard Core repository itself it is `src/OrchardCore.Cms.Web`.
- .NET SDK matching the project's target framework. Add `-f <tfm>` to `dotnet build`/`dotnet run` only when the project targets several frameworks.
- The `playwright-cli` skill. If the CLI is missing, install it with `npm install -g @playwright/cli@latest` (this installs the latest global version; the commands below remain valid).
- A browser engine for `playwright-cli`. Without Chrome (for example on macOS) install webkit and pass `--browser webkit` on the first `open` of a session; see `references/playwright-cli.md`.
## Core Workflow
1. **Build** the web projectView the complete source on GitHuborchardcore-theme-creator
When your agent uses it
Creates new Orchard Core themes in a solution that consumes Orchard Core packages, with the octheme project template, theme manifest and base themes, project file, Razor and Liquid layouts using RenderBodyAsync, RenderSectionAsync, render_body and render_section, resource tag helpers and manifests, the theme thumbnail, Assets.json asset builds, extra features declared in a theme manifest, and activation through the admin or the themes recipe step. Use when the user needs to create a new theme, scaffold a layout, derive from TheTheme or TheAdmin, or set up theme frontend assets. Use this skill when requests mention Orchard Core Theme Creator, dotnet new octheme, Create Manifest.cs, theme project file, theme assets, or closely related Orchard Core work. Strong matches include OrchardCore.Theme.Targets, OrchardCore.DisplayManagement.Manifest, ThemeAttribute, BaseTheme, OrchardCore.ProjectTemplates, TheTheme, TheBlogTheme, TheAgencyTheme, TheComingSoonTheme, TheAdmin, SafeMode, Assets.json, Theme.png.
What it loads into context
Frontmatter
237 tokensAlways available to the agent
SKILL.md
2,785 tokensWhen the skill is activated
Reference documents
3,790 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Prerequisites
- Theme Creation Workflow
- Quick Reference
- References
Files
SKILL.mdcore11,133 bytesSKILL.mdcore11,133 bytesSKILL.mdcore11,133 bytesreferences/assets.mddoc6,460 bytesreferences/theme-structure.mddoc8,789 bytes
Read SKILL.md
# Orchard Core Theme Creator
Step-by-step creation of a theme project for an Orchard Core site built on NuGet packages. For shape overrides, alternates, placement, and admin theme customization once the theme exists, use `orchardcore-theming`.
## Prerequisites
- .NET SDK 10.0+.
- An Orchard Core web project (startup project) that references `OrchardCore.Application.Cms.Targets` (see `orchardcore-setup`).
- Node.js and Yarn only when the theme compiles SCSS or scripts (see `orchardcore-asset-manager`).
## Theme Creation Workflow
### Step 1: Scaffold the project
View the complete source on GitHuborchardcore-theming
When your agent uses it
Skill for creating and customizing Orchard Core themes. Covers theme scaffolding with dotnet new octheme and the Theme.png thumbnail, Liquid and Razor layouts (render_section, render_body, RenderSectionAsync, RenderBodyAsync), zones, shape templates, alternates, placement rules, assets, resource manifests, theme settings, admin themes based on TheAdmin (bootstrap-select styles, admin menu color CSS custom properties), extra Feature attributes in theme manifests, and the jQuery and Vue 3 changes of Orchard Core 4. Use this skill when requests mention Orchard Core Theming, Create a Theme, theme layouts, shape overrides, template discovery, admin theme customization, or closely related Orchard Core implementation or troubleshooting work. Strong matches include OrchardCore.DisplayManagement.Manifest, OrchardCore.Theme.Targets, OrchardCore.ResourceManagement, IOrchardHelper, BagPart, FlowPart, ListPart, ResourceManifest, TheTheme, TheAdmin.
What it loads into context
Frontmatter
220 tokensAlways available to the agent
SKILL.md
3,084 tokensWhen the skill is activated
Reference documents
6,667 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- How to Use
- Evidence Rules
- Guidelines
- Reference Cues
- Tasks
- Create a Theme
- Additional Features in a Theme Manifest
- Admin Themes Based on TheAdmin
Files
SKILL.mdcore13,074 bytesreferences/assets-resources.mddoc5,737 bytesreferences/placement-rules.mddoc4,202 bytesreferences/shape-alternates.mddoc3,534 bytesreferences/shape-workflow.mddoc3,959 bytesreferences/theming-examples.mddoc8,964 bytes
Read SKILL.md
# Orchard Core Theming
Use this skill for Orchard Core theming tasks including theme creation, shape overrides, template discovery, content rendering, placement rules, and asset management.
## How to Use
- **Task match**: Scan the Tasks list below. If the request matches, go directly to the referenced files.
- **Exploration**: Use the section cues to pick a reference, then choose the relevant detail.
- Determine Razor vs Liquid early. Check the active theme for `.cshtml` (Razor) or `.liquid` files. If unclear, default to Liquid and confirm with the user.
- Open only the necessary reference files; prefer examples and ready-to-copy patterns.
## Evidence Rules
- Prefer repo evidence over assumptions: check the active theme, base theme, `placement.json`, and existing templates.View the complete source on GitHuborchardcore-twitter
When your agent uses it
Skill for integrating X Twitter in Orchard Core. Covers TwitterClient, X API settings, sign in with X Twitter, TwitterSettings, TwitterSigninSettings, ConfigureTwitterSettings with the OrchardCore X configuration section, ConsumerSecret and AccessTokenSecret from configuration or environment variables, recipes, and workflow status update activities. Use this skill when requests mention Orchard Core Twitter, Orchard Core X, TwitterClient, sign in with X, TwitterSettings, UpdateTwitterStatusTask, X workflow activity, or closely related Orchard Core implementation setup extension or troubleshooting work. Strong matches include work with OrchardCore.Twitter, OrchardCore.Twitter.Signin, OrchardCore.Twitter.Services, OrchardCore.Twitter.Workflows, ITwitterSettingsService, ITwitterSigninService, TwitterOptionsConfiguration, and UpdateTwitterStatusTask. It also helps with OAuth credentials, external authentication, recipes, and the source-backed patterns captured in this skill.
What it loads into context
Frontmatter
212 tokensAlways available to the agent
SKILL.md
1,501 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Enable X Integration
- Configure API Credentials
- Sign In With X
- Update X Status in a Workflow
- Use TwitterClient Programmatically
- Upgrading from 3.x
Files
SKILL.mdcore6,691 bytes
Read SKILL.md
# Orchard Core X Twitter Integration
The X Twitter module has two distinct features. `OrchardCore.Twitter` configures
the API client and workflow status activity. `OrchardCore.Twitter.Signin`
depends on it and `OrchardCore.Users.ExternalAuthentication` to add external
sign-in. Configure API credentials with the minimum provider permissions
required for the selected capability.
## Guidelines
- Enable `OrchardCore.Twitter` for the API client and status-update workflow task.
- Enable `OrchardCore.Twitter.Signin` only when X external login is required.
- Enable Users registration separately when external identities may create new local users.
- Store consumer secrets and access-token secrets in secure configuration.View the complete source on GitHuborchardcore-unit-test
When your agent uses it
Skill for writing automated tests for your own Orchard Core modules and themes outside the Orchard Core repository. Covers test project setup with xUnit and Moq, unit testing content part handlers, display drivers with a stub IUpdateModel, data migrations with a mocked IContentDefinitionManager, permission providers and services, building content items and definitions in tests, and in-process integration tests that host the real web project with WebApplicationFactory, provision a tenant through Auto Setup into a temporary App_Data, and run code in the tenant with IShellHost and ShellScope. Use this skill when requests mention Orchard Core unit tests, testing a module, mocking Orchard Core services, testing a driver, handler or migration, or integration tests with a tenant. Strong matches include xUnit, Moq, WebApplicationFactory, Microsoft.AspNetCore.Mvc.Testing, OrchardCore.AutoSetup, IShellHost, ShellScope, ContentPartHandler, ContentPartDisplayDriver, IUpdateModel, DataMigration.
What it loads into context
Frontmatter
228 tokensAlways available to the agent
SKILL.md
3,126 tokensWhen the skill is activated
Reference documents
842 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Test Project Setup
- Unit Testing a Content Part Handler
- Unit Testing a Display Driver
- Unit Testing a Data Migration
- Unit Testing a Permission Provider
- Integration Tests with a Real Tenant
- Running Tests
- Gotchas
Files
SKILL.mdcore14,796 bytesSKILL.mdcore14,796 bytesSKILL.mdcore14,796 bytesreferences/testing-examples.mddoc3,764 bytes
Read SKILL.md
# Orchard Core Module Testing
Orchard Core does not ship a testing package. Its own harness (`SiteContext`, `OrchardTestFixture`, `BlogContext` in `test/OrchardCore.Tests`) is not published to NuGet, so do not reference or recreate those names. Everything below uses shipped Orchard Core packages plus standard .NET test packages.
| Testing | Approach |
|---------|----------|
| Logic in a service, handler, driver, migration or permission provider | Unit test with xUnit and Moq; construct the class directly. |
| Behavior that needs the real pipeline (content storage, YesSql indexes, recipes, routes, APIs) | Integration test hosting the web project with `WebApplicationFactory` and an auto-provisioned tenant. |
| Pages in a browser | `orchardcore-tester` (playwright-cli against a running site). |
## Test Project Setup
```bash
dotnet new xunit -n MyModule.TestsView the complete source on GitHuborchardcore-url-rewriting
When your agent uses it
Skill for configuring URL rewriting in Orchard Core. Covers redirect vs rewrite rules, regex pattern matching, Apache mod_rewrite flags, admin path exclusion, rule ordering with drag-and-drop in List and Grid admin list layouts, the ManageUrlRewritingRules permission, custom rule sources, IRewriteRuleHandler, display drivers for custom rule types, and the UrlRewriting recipe step. Use this skill when requests mention Orchard Core URL Rewriting, redirects, 301 or 302 redirects, rewrite rules, Redirect Rule Properties, Rewrite Rule Properties, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include OrchardCore.UrlRewriting, OrchardCore.UrlRewriting.Models, IUrlRewriteRuleSource, IRewriteRulesManager, RewriteRuleHandlerBase, AddRewriteRuleSource, RewriteRule, QueryStringPolicy, and RedirectType.
What it loads into context
Frontmatter
205 tokensAlways available to the agent
SKILL.md
2,768 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Configure URL Rewriting and Redirects
Files
SKILL.mdcore12,070 bytesSKILL.mdcore12,070 bytes
Read SKILL.md
# Orchard Core URL Rewriting - Prompt Templates
## Configure URL Rewriting and Redirects
You are an Orchard Core expert. Generate URL rewrite rules, redirect configurations, and custom rule sources for Orchard Core.
### Guidelines
- Enable `OrchardCore.UrlRewriting` for URL rewrite and redirect support. Manage rules under **Tools > URL Rewriting**; this requires the `ManageUrlRewritingRules` permission (`OrchardCore.UrlRewriting.UrlRewritingPermissions.ManageUrlRewritingRules`).
- Rules are processed sequentially by `Order` (then creation date). Each rule is translated to an ASP.NET Core Apache mod_rewrite rule (`RewriteRule pattern substitution [NC,QSA|QSD,R=301]`).
- Requests under the admin prefix (`/Admin` by default) are always excluded, so a bad rule cannot lock you out of the admin.
- Use **Redirect Rules** (301/302/307/308) to send users to a new URL (browser address bar changes).
- Use **Rewrite Rules** to serve content from a different URL without changing the browser address bar.
- Patterns use regular expressions; use `^` and `$` for exact matches.View the complete source on GitHuborchardcore-users-admin-list-filters
When your agent uses it
Skill for adding custom filters to the Orchard Core users admin list (Security → Users). Covers IUsersAdminListFilterProvider named and default terms with OneCondition/ManyCondition against YesSql indexes over User, changing the bare-text term and exact match with UsersAdminListFilterOptions, registering the provider in Startup, and documenting the new filter in the redesigned Available Filters dialog with a DisplayDriver<UserIndexOptions> Thumbnail card. Use this skill when requests mention custom users admin list filters, IUsersAdminListFilterProvider, QueryEngineBuilder<User>, WithNamedTerm, UsersAdminListFilterOptions, the Filter syntax dialog, UserIndexOptions filter cards, UsersAdminFilters Thumbnail views, upgrading filter cards to Orchard Core 4.0, or closely related Orchard Core users admin list search work. Strong matches include OrchardCore.Users, IUsersAdminListFilterProvider, UserIndexOptions, UsersAdminList, and UsersAdminFilters-*.Thumbnail.cshtml.
What it loads into context
Frontmatter
226 tokensAlways available to the agent
SKILL.md
2,357 tokensWhen the skill is activated
Reference documents
1,095 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Add a custom filter to the users admin list
- Register the filter logic
- Register the filter card
- The card template
- Upgrading from 3.x
- Troubleshooting
Files
SKILL.mdcore10,256 bytesreferences/users-admin-list-filters-examples.mddoc4,900 bytes
Read SKILL.md
# Orchard Core Users Admin List Filters
## Add a custom filter to the users admin list
You are an Orchard Core expert. The users admin list (**Security → Users**) has a search box that parses tokens such as `name:`, `email:`, `status:`, `role:`, and `sort:`. Add your own token by implementing a filter provider, then document it for end users by adding a card to the **Available Filters** dialog. These are two independent extension points: the filter **logic** and the filter **card**. A filter still works without a card, but users will not discover it; a card without a matching provider documents a filter that does nothing. The users list works exactly like the content items admin list (see `orchardcore-contents-admin-list-filters`); only the model type differs.
### Guidelines
- Enable `OrchardCore.Users`. The users admin list ships with this feature.
- Implement `IUsersAdminListFilterProvider` to add searchable terms; register it with `services.AddScoped<IUsersAdminListFilterProvider, T>()`.
- Build terms against `QueryEngineBuilder<User>`. Filter against a YesSql index over `User` (`UserIndex` or a custom index), not against materialized user objects.
[Credential-related source omitted]
- Use `OneCondition` for a term that accepts a single value (the `fa-minus`/**Single** icon). Use `ManyCondition` for a term that supports the `AND`, `OR`, and `NOT` operators and groups (the `fa-bars`/**Multiple** icon), and supply both the matching and the negated predicate.
- Document the filter by implementing `DisplayDriver<UserIndexOptions>` and returning a `View(...)` in the `Content` zone of the `Thumbnail` display type; register it with `services.AddDisplayDriver<UserIndexOptions, T>()`.View the complete source on GitHuborchardcore-users-roles
When your agent uses it
Skill for managing users, roles, and permissions in Orchard Core. Covers login, registration, and external authentication settings recipes, persistent authentication cookies, email confirmation resend, ILoginFormEvent and ILogoutFormEvent, the User Loggedout workflow event, RegistrationOptions and ExternalLoginOptions through IOptionsMonitor, external login scripts, rate-limited user endpoints, Users and Roles configuration sections, role recipes with PermissionBehavior, ViewRoles, UsersPermissions, and permission checks in code and Liquid. Use this skill when requests mention Orchard Core Users & Roles, Login Settings, Remember me, Email Confirmation, Logout events, Defining Custom Permissions, Checking Permissions, or closely related Orchard Core implementation, setup, extension, upgrade, or troubleshooting work. Strong matches include OrchardCore.Users, OrchardCore.Roles, OrchardCore.Users.Registration, OrchardCore.Users.ExternalAuthentication, IAuthorizationService, UsersPermissions, and LoginSettings.
What it loads into context
Frontmatter
215 tokensAlways available to the agent
SKILL.md
2,956 tokensWhen the skill is activated
Reference documents
1,175 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Manage Users, Roles, and Permissions
Files
SKILL.mdcore13,767 bytesreferences/users-roles-examples.mddoc5,702 bytes
Read SKILL.md
# Orchard Core Users & Roles - Prompt Templates
## Manage Users, Roles, and Permissions
You are an Orchard Core expert. Generate code and configuration for user management, roles, and permissions.
### Guidelines
- Enable `OrchardCore.Users` and `OrchardCore.Roles` for user and role management.
- Declare permissions in a static `*Permissions` class and expose them through an `IPermissionProvider` (see `orchardcore-permission-providers`).
- Create permission descriptions with `LocalizationSource.Create("...", typeof(MyPermissions))`.
- Use `IAuthorizationService.AuthorizeAsync(User, permission)` for permission checks and `has_permission` in Liquid.
- Reference built-in user permissions through `OrchardCore.Users.UsersPermissions` and role permissions through `OrchardCore.Roles.RolesPermissions`.
- Customize login, logout, registration, and password recovery with `ILoginFormEvent`, `ILogoutFormEvent`, `IRegistrationFormEvents`, and `IPasswordRecoveryFormEvents`.View the complete source on GitHuborchardcore-widgets
When your agent uses it
Skill for creating and managing widgets in Orchard Core. Covers widget content types, zones, layers, layer rules, widget placement configuration, Widget shape templates and wrappers, safe rendering of widget HTML, and ManageLiquidTemplates for Liquid widgets. Use this skill when requests mention Orchard Core Widgets, Create and Manage Widgets, Enabling Widget Features, Creating a Widget Content Type, Layer Configuration via Recipe, Layer Rule Expressions, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.Widgets, OrchardCore.Layers, OrchardCore.Flows, FlowPart, DataMigration, IContentDefinitionManager, WithPart, WithField, LayerRule, Paragraph, RawHtml, Blockquote, Image, Container. It also helps with widget examples, Layer Configuration via Recipe, Layer Rule Expressions, Placing Widgets in Zones, plus the code patterns, admin flows, recipe steps, and referenced examples captured in this skill.
What it loads into context
Frontmatter
223 tokensAlways available to the agent
SKILL.md
1,972 tokensWhen the skill is activated
Reference documents
799 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Create and Manage Widgets
Files
SKILL.mdcore8,741 bytesreferences/widget-examples.mddoc3,501 bytes
Read SKILL.md
# Orchard Core Widgets - Prompt Templates
## Create and Manage Widgets
You are an Orchard Core expert. Generate widget definitions, layer configurations, and zone placement for Orchard Core.
### Guidelines
- Widgets are content types with the `Widget` stereotype.
- Widgets are placed in zones defined by the theme layout.
- Layers control when widgets are visible using rule expressions.
- Enable `OrchardCore.Widgets` and `OrchardCore.Layers` for widget support.
- Each widget is a content item that can be edited from the admin panel.
- Layer rules are composed of conditions (URL, role, culture, homepage, authentication, content type, JavaScript, Boolean, All/Any groups); see `orchardcore-layers` and `orchardcore-rules`.View the complete source on GitHuborchardcore-workflows
When your agent uses it
Skill for authoring Orchard Core workflows and custom workflow activities. Covers workflow definitions, WorkflowType recipes, startup tasks, event and task activities, the activity lifecycle (outcomes, Halt, Resume, hooks), activity properties and workflow Input, Output and Properties, activity display drivers and editors, Liquid and JavaScript expressions, expression encoding, script limits and cancellation that fault a workflow, correlation, blocking or resuming instances, workflow permissions, trimming, and running data pipelines from workflows. Use this skill when requests mention Orchard Core Workflows, WorkflowType, built-in or custom workflow activities, TriggerEventAsync, correlation, CreateTenantTask, HttpRequestTask, or Run Data Pipeline Task. Strong matches include OrchardCore.Workflows, IWorkflowManager, WorkflowExecutionContext, IWorkflowScriptEvaluator, TaskActivity, EventActivity, ActivityDisplayDriver, AddActivity, WorkflowsPermissions, and WorkflowTrimmingSettings.
What it loads into context
Frontmatter
214 tokensAlways available to the agent
SKILL.md
5,228 tokensWhen the skill is activated
Reference documents
1,517 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Enable the required features
- Define a workflow with a recipe
- Built-in activities
- Expressions and workflow context
- Correlation, blocking, and resuming
- Activity model
- Write a custom task activity
- Write a custom event activity
- Add display drivers and register activities
- Permissions
- Trimming
- Upgrading from 3.x
Files
SKILL.mdcore23,921 bytesreferences/workflow-examples.mddoc6,324 bytes
Read SKILL.md
# Orchard Core Workflows
Workflows are reusable visual definitions made of activities and outcome transitions. Create a workflow in **Workflows → Workflows**, add an event, configure tasks/events, connect outcomes, and enable the definition. Export a tested workflow through the workflow deployment step and reuse its serialized payload in a `WorkflowType` recipe step rather than hand-creating activity IDs or transitions.
- The **first event added** to a workflow is marked as its startup task automatically. Saving a workflow that has activities but no startup task shows a warning, and the workflow list shows a **No startup task** badge.
- Since Orchard Core 3.0, `WorkflowIndex.WorkflowStatus` is stored as an integer matching the `WorkflowStatus` enum. Compare raw SQL and custom index queries with the enum's integer value.
## Enable the required features
Enable the base feature and every feature that contributes an activity before importing a workflow that uses it.
```json
{
"steps": [View the complete source on GitHuborchardcore-xml-rpc
When your agent uses it
Skill for enabling XML-RPC and MetaWeblog remote publishing in Orchard Core so desktop blogging clients can create and edit content. Covers the XML-RPC endpoint, the Remote Publishing (MetaWeblog) feature, supported MetaWeblog methods, the RSD discovery route for lists, content and media authorization including Liquid content and restricted media uploads, IXmlRpcHandler and IMetaWeblogDriver extension points, and reader and writer services. Use this skill when requests mention Orchard Core XML-RPC, MetaWeblog, remote publishing, Open Live Writer, desktop blogging clients, or the xmlrpc endpoint, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include OrchardCore.XmlRpc, OrchardCore.RemotePublishing, IXmlRpcReader, IXmlRpcWriter, IXmlRpcHandler, MetaWeblogDriver, MetaWeblogHandler, and the /xmlrpc and /xmlrpc/metaweblog routes.
What it loads into context
Frontmatter
223 tokensAlways available to the agent
SKILL.md
1,795 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Enable Remote Publishing
Files
SKILL.mdcore7,842 bytes
Read SKILL.md
# Orchard Core XML-RPC - Prompt Templates
## Enable Remote Publishing
You are an Orchard Core expert. Enable and configure XML-RPC / MetaWeblog so external client applications such as Open Live Writer can create and edit content remotely.
### Guidelines
- The module ships two features:
- `OrchardCore.XmlRpc` — provides the core XML-RPC endpoint and protocol support (reader/writer services).
- `OrchardCore.RemotePublishing` — adds the MetaWeblog API on top of XML-RPC; depends on `OrchardCore.XmlRpc`.
- Enable `OrchardCore.RemotePublishing` when you want blogging-client support; it automatically brings in `OrchardCore.XmlRpc`.
- Endpoints (relative to the tenant prefix):
- `/xmlrpc` — the XML-RPC entry point (`HomeController`).View the complete source on GitHuborchardcore-yessql-indexes
When your agent uses it
Skill for creating custom YesSql indexes in Orchard Core. Covers MapIndex models, IndexProvider patterns, multi-row mappings for one-to-many relationships, migration table creation, and querying with ISession.QueryIndex(). Use this skill when requests mention Orchard Core YesSql Indexes, Create a Custom YesSql Index, Recommended Placement, Simple Lookup Index, One-to-Many Index with Multiple Rows Per Content Item, Migration Example, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.ContentManagement, CrestApps.Sports.Core.Indexes, CrestApps.Sports.Calendar.Indexes, OrchardCore.Data.Migration, CrestApps.Sports.Calendar.Migrations, OrchardCore.Modules. It also helps with yessql index examples, One-to-Many Index with Multiple Rows Per Content Item, Migration Example, Startup Registration, plus the code patterns, admin flows, recipe steps, and referenced examples captured in this skill.
What it loads into context
Frontmatter
225 tokensAlways available to the agent
SKILL.md
2,301 tokensWhen the skill is activated
Reference documents
392 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Create a Custom YesSql Index
Files
SKILL.mdcore10,867 bytesreferences/yessql-index-examples.mddoc1,910 bytes
Read SKILL.md
# Orchard Core YesSql Indexes - Prompt Templates
## Create a Custom YesSql Index
You are an Orchard Core expert. Generate code for custom YesSql indexes that follows Orchard Core conventions and CrestApps project structure.
### Guidelines
- Keep index models and index providers public sealed.
- Prefer placing reusable index models and index providers in the corresponding *.Core project when they are consumed by shared services.
- Use MapIndex for per-document projections.
- Use IndexProvider<ContentItem> for Orchard Core content-item indexing.
- Register index providers in Startup.cs with services.AddIndexProvider<TProvider>().
- Create index tables in migrations with SchemaBuilder.CreateMapIndexTableAsync<TIndex>().View the complete source on GitHubcrestapps-core-a2a
When your agent uses it
Skill for Agent-to-Agent (A2A) protocol support in CrestApps.Core on the A2A 1.0 SDK. Covers AddA2AClient and AddCoreAIA2AClient with Entity Framework Core or YesSql connection stores, A2AConnection and A2AConnectionMetadata authentication, AIProfileA2AMetadata, the agent card cache and A2AToolRegistryProvider, the listAvailableAgents, findAgentForTask and findToolsForTask tools, building an A2A host with IAgentHandler, A2AServer, ITaskStore and MapA2A, A2A 1.0 agent cards with supportedInterfaces published at /.well-known/agent-card.json, A2AHostOptions authentication and ExposeAgentsAsSkill, system agents exposed through the host, and upgrading from the 0.3 SDK.
What it loads into context
Frontmatter
211 tokensAlways available to the agent
SKILL.md
2,158 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Client
- Host
- Upgrading from 1.x
Files
SKILL.mdcore8,637 bytes
Read SKILL.md
# CrestApps.Core A2A
Use A2A when the remote system is an agent that reasons on its own (its own model, tools and context). Use MCP (`crestapps-core-mcp`) when the remote system exposes tools or resources. `CrestApps.Core.AI.A2A` ships the client; hosting is application code built on the `A2A` and `A2A.AspNetCore` 1.0 SDK packages, using `A2AHostOptions` from the framework.
## Client
```csharp
builder.Services.AddCrestAppsCore(crestApps => crestApps
.AddAISuite(ai => ai
.AddOpenAI()
.AddA2AClient(a2a => a2a
.AddEntityCoreStores())) // or .AddYesSqlStores(); registers ICatalog<A2AConnection>
.AddEntityCoreSqliteDataStore("Data Source=app.db"));
```View the complete source on GitHubcrestapps-core-ai-agents
When your agent uses it
Skill for AI agents in CrestApps.Core 2.0, specialized AIProfile records of type Agent that the primary model invokes as tools. Covers creating agent profiles with AgentMetadata availability (OnDemand or AlwaysAvailable), linking them with AgentInvocationMetadata, how AgentProxyTool runs an agent with tools disabled or through the orchestrator when AllowToolInvocation is set, the AgentInvocationDepth recursion guard, deployment inheritance and the chat slot, code-defined and system agents through IAIProfileProvider including the Tabular Data, PDF, Presentation and Word agents, chat-specific agents that read AIInvocationScope, exposing agents to MCP clients with McpServerOptions Agents and ExposeAllAgents, and SubAgent usage labels. Use it when delegating work to sub-agents, adding a framework-managed agent, publishing an agent over MCP, or troubleshooting an agent the model does not call.
What it loads into context
Frontmatter
210 tokensAlways available to the agent
SKILL.md
1,897 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Create an Agent
- Link Agents to a Chat Profile
- How an Agent Runs
- Code-Defined and System Agents
- Agents as MCP Server Tools
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore8,795 bytes
Read SKILL.md
# CrestApps.Core AI Agents
An agent is an `AIProfile` with `Type = AIProfileType.Agent`. The primary model sees each available agent as a tool that takes one `prompt` argument and returns the agent's answer. Each agent has its own system prompt, deployment and settings, so instructions do not collide.
## Guidelines
- `AddCoreAIOrchestration()` (or `AddAISuite(...)`) registers `AgentToolRegistryProvider`; nothing else is needed.
- Every agent needs a `Name` and a strong `Description`. Agents with an empty name or description are skipped, and the description is all the model (or an MCP client) has to decide with.
- Use `OnDemand` for most agents and link them per profile. `AlwaysAvailable` agents are added to every request and cost tokens on every turn.
- By default an agent runs as one completion with tools disabled. Set `AgentMetadata.AllowToolInvocation = true` only when it needs its own tools; it then runs through its orchestrator, and agents inside it are still suppressed.
- Leave `ChatDeploymentName` empty to inherit the caller's chat deployment, or name a cheaper or more capable model for the agent.
## Create an Agent
View the complete source on GitHubcrestapps-core-ai-markdown
When your agent uses it
Skill for Markdig-backed Markdown normalization in CrestApps.Core 2.0 AI document, data source and RAG flows. Covers the CrestApps.Core.AI.Markdown package, AddMarkdown on the AI suite builder and AddCoreAIMarkdown on IServiceCollection, MarkdownAITextNormalizer replacing the default IAITextNormalizer, RagTextNormalizer content, chunk and title normalization with HTML stripping and Microsoft.Extensions.DataIngestion.Markdig parsing, the gpt-4o tokenizer chunker with 500 tokens per chunk and 50 tokens of overlap, the plain-text fallback for unsupported inline types, where the normalizer is used (data source indexing, preemptive retrieval, reference titles), and pairing it with document processing. Use it when indexing Markdown-heavy content for retrieval, replacing the text normalizer, or troubleshooting chunk sizes and leftover markup in retrieved text.
What it loads into context
Frontmatter
208 tokensAlways available to the agent
SKILL.md
1,212 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Register
- Behavior
- Where It Is Used
- Custom Normalizer
- Troubleshooting
Files
SKILL.mdcore5,600 bytesSKILL.mdcore5,600 bytesSKILL.mdcore5,600 bytesSKILL.mdcore5,600 bytesSKILL.mdcore5,600 bytes
Read SKILL.md
# CrestApps.Core AI Markdown
`CrestApps.Core.AI.Markdown` makes text normalization Markdown-aware. It is opt-in: `AddCoreAIServices()` registers only the plain `DefaultAITextNormalizer`, and the core AI package does not depend on Markdig.
## Guidelines
- Reference the `CrestApps.Core.AI.Markdown` package and call `AddMarkdown()` on `CrestAppsAISuiteBuilder`, or `AddCoreAIMarkdown()` on `IServiceCollection` (namespace `CrestApps.Core.AI.Markdown`).
- Registration adds `MarkdownAITextNormalizer` as the singleton `IAITextNormalizer`. The base registration uses `TryAddSingleton` and this one uses `AddSingleton`, so the Markdown normalizer wins whichever is called first.
- The normalizer delegates to the static `RagTextNormalizer`: HTML is stripped, the text is parsed through `Microsoft.Extensions.DataIngestion.Markdig`, and plain text is extracted before whitespace is normalized.
- `AddMarkdown()` does not register document stores, readers or upload endpoints. Add document processing or ingestion separately (`crestapps-core-document-processing`).
## Register
```csharpView the complete source on GitHubcrestapps-core-ai-memory
When your agent uses it
Skill for durable, user-scoped AI memory in CrestApps.Core. Covers AddAIMemory and AddCoreAIMemory, Entity Framework Core and YesSql memory stores, the AIMemory index profile and the AddAIMemory option on the Elasticsearch, Azure AI Search and PostgreSQL backends, AIMemoryOptions IndexProfileName and TopN, enabling memory per AI profile with MemoryMetadata and for chat interactions with ChatInteractionMemoryOptions, preemptive memory retrieval through GeneralAIOptions, the save_user_memory, search_user_memories, list_user_memories and remove_user_memory tools, IAIMemorySafetyService validation, and custom IMemoryVectorSearchService implementations.
What it loads into context
Frontmatter
169 tokensAlways available to the agent
SKILL.md
1,155 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Registration
- Turning Memory On
- Tools
- Contracts
- Custom Safety Rules
- Custom Vector Backend
Files
SKILL.mdcore5,023 bytes
Read SKILL.md
# CrestApps.Core AI Memory
Memory stores long-lived facts about the authenticated user (preferences, projects, roles) and recalls them in later conversations. It is not for transient chat state.
## Registration
```csharp
builder.Services.AddCrestAppsCore(crestApps => crestApps
.AddAISuite(ai => ai
.AddOpenAI()
.AddAIMemory(memory => memory
.AddEntityCoreStores())) // or .AddYesSqlStores()
.AddIndexingServices(indexing => indexing
.AddEntityCoreStores()View the complete source on GitHubcrestapps-core-ai-model-capabilities
When your agent uses it
Skill for metadata-driven deployment capabilities in CrestApps.Core 2.0. Covers trained model features such as textGeneration, toolCalling, streaming, reasoning, realtime, textEmbedding, speechToText and textToSpeech, model parameters such as reasoningEffort, declaring them with AIDeploymentMetadata or the Features and Parameters configuration shorthand for Azure App Service settings, registering custom features, parameters and slots with AddAIDeploymentFeature, AddAIDeploymentParameter, AddAIDeploymentSlot and AIDeploymentCapabilityOptions, IAIDeploymentCapabilityService, deployment slots and their resolution chain, AIDeploymentParametersMetadata chat and utility values, IAIDeploymentParameterBinder, UseModelParameters, capability enforcement, the ChatApi Responses routing for reasoning with tools, capability-aware chat UIs, and migrating from AIDeploymentPurpose. Use it when declaring what a model supports, adding a new knob, or fixing stripped tools, missing pickers, or reasoning-effort errors.
What it loads into context
Frontmatter
239 tokensAlways available to the agent
SKILL.md
3,360 tokensWhen the skill is activated
Reference documents
1,233 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Built-in Definitions
- Declaring Capabilities
- Asking What a Deployment Supports
- Slots
- Registering Features and Parameters
- Selected Values and Runtime Binding
- Reasoning with Tools on the Responses API
- Capability-Aware Chat UIs
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore14,427 bytesreferences/model-capabilities-examples.mddoc5,618 bytes
Read SKILL.md
# CrestApps.Core AI Model Capabilities
A deployment declares what its model can do. Two kinds of definitions are registered once at startup and referenced by name:
| Concept | Shape | Example |
|---|---|---|
| **Feature** | A trained capability the model has or lacks | `toolCalling`, `reasoning`, `realtime` |
| **Parameter** | A configurable option with a kind, allowed values, range and default | `reasoningEffort` |
| **Slot** | What this installation uses a deployment for; pairs a required feature with a site default | `chat`, `embedding`, `realtime` |
Capabilities live on the deployment. Slots are derived from them: declaring `textEmbedding` is what puts a model in the embedding picker. There is no purpose flag to set.
## Guidelines
View the complete source on GitHubcrestapps-core-ai-personas
When your agent uses it
Skill for AI personas in CrestApps.Core 2.0, reusable characters with instructions, an assistant name, language, voice and avatar that AI profiles, chat interactions and profile templates link to by name. Covers opting in with AddPersonas and AddYesSqlStores or AddEntityCoreStores, CreateAIPersonaIndexSchemaAsync, IAIPersonaManager, persona Markdown files under Templates Personas and AddEmbeddedPersonas, linking with AIPersonaMetadata or the top-level PersonaId, how the persona block is prepended to the system message with the assistant_name Liquid variable, voice selection with IAIPersonaResolver SelectVoiceAsync, the ResolvePersonaAsync and SelectPersonaVoiceAsync service-provider helpers, showing the assistant name and avatar with AIChatAssistantDisplay, and custom IAIPersonaProvider sources. Use it when giving assistants a consistent identity across profiles, or when a persona's instructions, name or voice do not apply.
What it loads into context
Frontmatter
225 tokensAlways available to the agent
SKILL.md
2,060 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Registration
- What a Persona Holds
- Managing Personas
- Persona Files
- Linking a Persona
- How It Is Applied
- Voice
- Assistant Name and Avatar in Chat
- Custom Persona Source
- Related Skills
Files
SKILL.mdcore9,411 bytes
Read SKILL.md
# CrestApps.Core AI Personas
A persona says **who** the assistant is: its instructions, the name it uses, its language, voice and avatar. The profile's system message and prompt templates still say **what** it does. A resource links to one optional persona by its technical name, so editing the persona changes every profile, interaction and template that links to it from the next message. Personas are not AI templates: a template is copied when used, a persona stays linked.
## Guidelines
- Personas are opt-in. Without `AddPersonas(...)`, persona links are kept but ignored and chats run with the profile's own instructions and voice.
- Link by `Name`, never by item id. Names survive export and import across tenants; ids do not. A persona's name cannot change once saved.
- Keep business rules in the profile. The persona block comes first in the system message, so the profile's rules win a conflict.
- Greetings stay with the profile's welcome message so one persona can serve profiles that open differently.
- Resolve personas only through `IAIPersonaResolver` (or the service-provider helpers) so chat, chat interactions, realtime and voice behave the same.
## Registration
View the complete source on GitHubcrestapps-core-ai-profiles
When your agent uses it
Skill for designing CrestApps.Core 2.0 AI Profiles, the reusable contract that controls prompts, deployments, tools, agents, retrieval, memory, persona, chat mode and session behavior. Covers AIProfile fields and types (Chat, Utility, TemplatePrompt, Agent), chat and utility deployment selection resolved through slots, AIProfileMetadata, FunctionInvocationMetadata, AgentInvocationMetadata, PromptTemplateMetadata, AIDeploymentParametersMetadata chat and utility model parameters, AIPersonaMetadata, ChatModeProfileSettings with ConversationDeploymentName, PromptSecurityProfileSettings, ResponseHandlerProfileSettings, IAIProfileManager and code-defined IAIProfileProvider profiles, Markdown profile templates under Templates Profiles, the profile as the tool authorization boundary, and upgrading from the removed RealtimeDeploymentName and ChatMode Realtime. Use it when creating or editing profiles in code, choosing what belongs on a profile versus a deployment, or troubleshooting profile behavior.
What it loads into context
Frontmatter
220 tokensAlways available to the agent
SKILL.md
2,145 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Building Blocks
- Profile Types
- Creating a Profile in Code
- What Lives on a Profile
- Code-Defined Profiles
- Profile Templates
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore9,879 bytes
Read SKILL.md
# CrestApps.Core AI Profiles
A deployment answers "which model runs". An AI Profile answers "how should this experience behave": instructions, deployments, orchestrator, tools, agents, knowledge, memory, persona, chat mode and post-session rules. AI Chat sessions, agents and orchestrators all read the profile.
## Guidelines
- Validate a connection and deployment with Chat Interactions first; move to a profile when the behavior must be reusable.
- Keep model choice in deployments and behavior in the profile. Reference deployments by name; the runtime resolves them through slots.
- Prefer several focused profiles over one overloaded profile. Use agents (`crestapps-core-ai-agents`) to delegate specialized work.
- Put identity and tone in a persona (`crestapps-core-ai-personas`) when several profiles should share it.
- The profile is the tool authorization boundary for AI sessions: every tool, MCP connection and agent the author attached runs for any caller allowed to use the profile, including anonymous ones. Only attach what every caller may use.
## Building Blocks
View the complete source on GitHubcrestapps-core-ai-runtime
When your agent uses it
Skill for the provider-agnostic AI runtime in CrestApps.Core 2.0. Covers AddCoreAIServices and AddAISuite registration, provider connections and configured deployments under CrestApps AI Connections and Deployments, declaring deployment Features instead of the removed Purpose or Type, resolving deployments through slots with IAIDeploymentManager ResolveSlotAsync, GetAllBySlotAsync, ResolveUtilityOrDefaultAsync and ResolveSlotOrThrowAsync, DefaultAIDeploymentSettings site defaults, IAIClientFactory chat, embedding, image, speech and realtime clients, IAICompletionService and IAICompletionContextBuilder, custom IAICompletionClient providers, and upgrading 1.x code that used AIDeploymentPurpose. Use it when wiring AI services into an ASP.NET Core host, picking a deployment in code, or troubleshooting deployments that do not resolve.
What it loads into context
Frontmatter
204 tokensAlways available to the agent
SKILL.md
2,792 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Registration
- Connections and Deployments
- Resolving a Deployment
- Key Runtime Services
- Example Completion Service
- Direct Clients
- Custom Providers
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore12,439 bytes
Read SKILL.md
# CrestApps.Core AI Runtime
The runtime is the provider-agnostic layer every other AI feature builds on. A **connection** holds credentials and an endpoint, a **deployment** names a model on a connection and declares what that model can do, and a **slot** says what the installation uses a deployment for.
## Guidelines
- Prefer `AddCrestAppsCore(...).AddAISuite(...)` for application composition. Use `AddCoreAIServices()` only when the host composes raw service registrations itself.
- Program against `IAIClientFactory`, `IAICompletionService`, `IAICompletionContextBuilder` and `IAIDeploymentManager`. Never create a provider SDK client in business code.
- Every configured deployment declares its model capabilities through `Features`. A configured entry with no features and no legacy purpose is skipped at startup with the warning "declares no model capabilities".
- Pick deployments through slots (`AIDeploymentSlotNames`) and `ResolveSlotAsync(...)`. There is no deployment purpose or type in 2.0.
- Use `crestapps-core-ai-model-capabilities` for registering features, parameters and slots, `crestapps-core-ai-usage-metering` for usage records, and the provider skills (`crestapps-core-openai`, `crestapps-core-azure-openai`, `crestapps-core-ollama`, `crestapps-core-azure-ai-inference`) for provider-specific settings.
## Registration
View the complete source on GitHubcrestapps-core-ai-templates
When your agent uses it
Skill for Liquid prompt templates in CrestApps.Core 2.0. Covers AddCoreAITemplating and AddTemplating registration, Markdown templates with front matter under Templates and Templates Prompts, AddTemplatesFromAssembly, code and discovery-path templates through TemplateOptions, ITemplateService ListAsync, GetAsync, RenderAsync and MergeAsync, ITemplateEngine validation, custom ITemplateProvider and IDynamicTemplateProvider sources, template Aliases, the AIProfileSystemPromptTemplateProvider that exposes SystemPrompt AI profile templates by name, selecting templates on a profile with PromptTemplateMetadata, and how templates compose with personas. Use it when authoring reusable system prompts, loading templates from a database, or fixing a selected template that does not render.
What it loads into context
Frontmatter
183 tokensAlways available to the agent
SKILL.md
1,583 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Registration
- Template Example
- Using Templates
- Selecting Templates on a Profile
- Custom Providers
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore7,387 bytes
Read SKILL.md
# CrestApps.Core AI Templates
Prompts are Markdown files with YAML front matter, rendered with Liquid (Fluid) and discovered from embedded resources, the file system, code, or custom providers.
## Guidelines
- `AddCoreAIServices()` already chains `AddCoreAITemplating()`; call it directly only when using templating on its own.
- Keep each template to one concern (tone, safety, RAG rules) and compose at runtime with `MergeAsync` or profile selections.
- Put system prompts under `Templates/Prompts/` (their `Kind` defaults to `SystemPrompt`). Files directly under `Templates/` must declare `Kind`. Generic `Templates/` discovery is not recursive.
- Use a persona (`crestapps-core-ai-personas`) for identity and voice instead of copying the same persona prompt into many templates.
- All `ITemplateService` and `ITemplateProvider` methods take an optional `CancellationToken`; pass it through.
## Registration
View the complete source on GitHubcrestapps-core-ai-usage-metering
When your agent uses it
Skill for AI usage metering in CrestApps.Core 2.0. Covers how every client created by IAIClientFactory (chat, embedding, image, speech-to-text, text-to-speech and realtime) records one AICompletionUsageRecord per provider request, enabling it with GeneralAIOptions EnableAIUsageTracking, the recorded units (cached, reasoning and audio tokens, audio duration, characters, images) and AIUsageOperationTypes, labeling requests by category and purpose with UseUsageLabels, AIUsageScope, AICompletionContextKeys and AIUsagePurposes, metering clients built outside the factory with AIUsageMetering Meter, observing records with IAICompletionUsageObserver, storing them with IAICompletionUsageStore, and building per-model, per-category and per-purpose reports with AIUsageReport. Use it when pricing or attributing AI usage, building a usage dashboard, or troubleshooting missing or mislabeled usage records.
What it loads into context
Frontmatter
223 tokensAlways available to the agent
SKILL.md
2,212 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Enable Metering and Storage
- What a Record Holds
- Labeling Requests
- Metering a Client Built Outside the Factory
- Observing Records
- Reports
- Provider Notes
- Upgrading from 1.x
Files
SKILL.mdcore10,058 bytes
Read SKILL.md
# CrestApps.Core AI Usage Metering
Every client `IAIClientFactory` returns meters its own requests by wrapping the provider's client and reading the provider-agnostic `UsageDetails` on each response. That covers every provider, including custom `IAIClientProvider` implementations, with no provider code.
## Guidelines
- Turn metering on with `GeneralAIOptions.EnableAIUsageTracking = true`. It is off by default.
- A record is written per request sent to the provider, not per user turn. Planning, query rewrites, vision calls, each tool-calling round trip, each embedding batch and each realtime response are separate records, so the request count equals billed requests.
- Metering sits below every middleware you add, so `UseFunctionInvocation()` yields one record per round trip and a cached response yields none.
- Label your own requests with `UseUsageLabels(...)` on the client pipeline, or an `AIUsageScope` around a call into a service that creates the client for you. Labels never reach the provider.
- A client you build without the factory is not metered until you wrap it with `AIUsageMetering.Meter(...)`.
## Enable Metering and Storage
View the complete source on GitHubcrestapps-core-aspnet-hosting
When your agent uses it
Skill for composing CrestApps.Core 2.0 into ASP.NET Core MVC, Razor Pages, Blazor Web App, Minimal API, and .NET MAUI hybrid hosts. Covers Program.cs ordering, AddCrestAppsCore with a store and commit filters, middleware order (UseWebSockets before UseRouting, UseAIAnonymousVisitorCookie, rate limiting), chat hub classes derived from AIChatHubCore and ChatInteractionHubBase with ConfigureCrestAppsChatHubOptions, the WebRTC realtime transport, the document and knowledge-figure endpoints with their resource-based authorization handlers, MCP endpoint mapping, the @crestapps/ai-chat-ui browser assets, live site-settings options through IOptionsMonitor, and which helpers are sample-host code rather than package APIs. Use it when wiring CrestApps.Core into a new or existing web application or troubleshooting host startup.
What it loads into context
Frontmatter
207 tokensAlways available to the agent
SKILL.md
2,854 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Rules
- MVC Program.cs
- Chat Hubs
- Document Endpoint Authorization
- Other Application Models
- Chat UI Assets
- Live Site-Settings Options
- Sample-Host Code, Not Package APIs
- Upgrading from 1.x
Files
SKILL.mdcore12,639 bytesSKILL.mdcore12,639 bytes
Read SKILL.md
# CrestApps.Core ASP.NET Hosting
You are a CrestApps.Core expert. Register host services first, compose CrestApps through `AddCrestAppsCore(...)`, then map only the hubs and endpoints for the features the host enables.
## Rules
- Packages go in the web project. Pick a provider package, the feature packages, and one store package (`CrestApps.Core.Data.EntityCore` or `CrestApps.Core.Data.YesSql`) when records must persist.
- The service registrations are identical for MVC, Razor Pages, Blazor and Minimal APIs; only the UI and endpoint layer differs.
- Add a commit boundary for every write path: `AddCrestAppsStoreCommitterFilter()` for MVC, `.AddSignalR(addStoreCommitterFilter: true)` for hubs, `StoreCommitterEndpointFilter` for Minimal API groups, and an explicit `IStoreCommitter.CommitAsync()` in background scopes.
- Call `UseWebSockets()` before `UseRouting()`. HTTP/2 WebSocket handshakes (extended CONNECT) are otherwise rejected with 405, which breaks the realtime WebSocket transport.
- Call `UseAIAnonymousVisitorCookie()` (from `CrestApps.Core.AI.Chat`) after routing and before authentication when anonymous visitors chat, so rate limiting and session reuse get a stable visitor key.
- Every hub type that is mapped needs `ConfigureCrestAppsChatHubOptions<THub>()` (or `ConfigureChatHubOptions<THub>()` on the Chat Interactions builder). `HubOptions<THub>` is per hub type; an unconfigured hub runs on SignalR defaults (one parallel invocation per client), which deadlocks the realtime WebRTC handshake.
- The document and figure endpoints authorize against resources through `IAuthorizationService`. Register `IAuthorizationHandler` implementations that grant the requirements, or every download and upload is forbidden.
View the complete source on GitHubcrestapps-core-azure-ai-inference
When your agent uses it
Skill for using Azure AI Inference, Azure AI Foundry serverless models, and GitHub Models in CrestApps.Core 2.0. Covers AddAzureAIInference and AddCoreAIAzureAIInference registration, connections with the AzureAIInference client name, Endpoint, AuthenticationType (Default, ApiKey, ManagedIdentity) and IdentityId, configured chat and embedding deployments that declare model capabilities through Features and Parameters instead of the removed Purpose or Type, deployment slots resolved with ResolveSlotAsync, per-model capability differences such as tool calling, unsupported image, speech and realtime clients, and upgrading from 1.x. Use it when connecting a CrestApps.Core host to GitHub Models or an Azure AI model catalog endpoint, comparing model families behind one endpoint, or troubleshooting authentication, skipped deployments, or tools that never run.
What it loads into context
Frontmatter
202 tokensAlways available to the agent
SKILL.md
1,828 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Registration
- Configuration
- Resolve Through Slots
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore8,151 bytes
Read SKILL.md
# CrestApps.Core Azure AI Inference
The `CrestApps.Core.AI.AzureAIInference` package uses the `Azure.AI.Inference` SDK to reach one endpoint that serves many model families (OpenAI, Meta Llama, Mistral, Cohere, and others). It is the provider for GitHub Models and for serverless model deployments in Azure AI Foundry.
## Guidelines
- Use it for multi-model evaluation, GitHub Models prototypes, and serverless Azure model catalog deployments.
- Keep the endpoint and credentials on the connection; keep the model name and its capabilities on the deployment.
- Always set `AuthenticationType`. When it is empty the provider uses `DefaultAzureCredential`, even if `ApiKey` is set. A GitHub token needs `"AuthenticationType": "ApiKey"`.
- Only chat and embeddings are supported. Image generation, speech-to-text, text-to-speech and realtime throw `NotSupportedException`; use `crestapps-core-openai` or `crestapps-core-azure-openai` for those.
- Declare features per model. Tool calling, vision and structured outputs vary across the catalog; declare only what the chosen model supports.
## Registration
View the complete source on GitHubcrestapps-core-azure-ai-search
When your agent uses it
Skill for using Azure AI Search as the CrestApps.Core indexing and vector backend. Covers CrestApps.Core.Azure.AISearch and CrestApps.Core.AI.Azure.AISearch, AddAzureAISearch on the indexing builder with AddAIDocuments, AddAIDataSources and AddAIMemory, AddCoreAzureAISearchServices, AzureAISearchConnectionOptions with Default, ApiKey and ManagedIdentity authentication, AddAzureAISearchODataFilterTranslator, the filters complex field and typed knowledge columns, in-place schema upgrades through TryAddFieldsAsync, external Azure AI Search source mappings with IAIDataSourceChangeNotifier, and troubleshooting tier, authentication and filter errors.
What it loads into context
Frontmatter
170 tokensAlways available to the agent
SKILL.md
1,213 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Registration
- Configuration
- Filters and Typed Columns
- External Azure AI Search Sources
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore5,177 bytesSKILL.mdcore5,177 bytesSKILL.mdcore5,177 bytesSKILL.mdcore5,177 bytesSKILL.mdcore5,177 bytesSKILL.mdcore5,177 bytes
Read SKILL.md
# CrestApps.Core Azure AI Search
Use Azure AI Search as the knowledge-base backend for AI documents, AI data sources and AI memory. For the data source model see `crestapps-core-data-sources`.
## Registration
```csharp
builder.Services.AddCrestAppsCore(crestApps => crestApps
.AddAISuite(ai => ai.AddAzureOpenAI())
.AddIndexingServices(indexing => indexing
.AddYesSqlStores()
.AddAzureAISearch(
builder.Configuration.GetSection("CrestApps:AzureAISearch"),
azureAISearch => azureAISearchView the complete source on GitHubcrestapps-core-azure-openai
When your agent uses it
Skill for using Azure OpenAI and Azure AI Speech in CrestApps.Core 2.0. Covers AddAzureOpenAI and AddCoreAIAzureOpenAI registration, Azure connections with Endpoint, AuthenticationType (Default, ApiKey, ManagedIdentity), IdentityId and the ChatApi setting, the CrestApps AI AzureClient retry and logging options, configured deployments that declare model capabilities through Features and Parameters instead of the removed Purpose or Type, contained-connection AzureSpeech deployments for speech-to-text and text-to-speech with selectable audio formats and speed, deployment slots resolved with ResolveSlotAsync, reasoning requests with tools routed to the Responses endpoint, gpt-realtime speech-to-speech over the GA realtime WebSocket endpoint, and upgrading from 1.x. Use it when wiring Azure OpenAI into a CrestApps.Core host, choosing API key or managed identity authentication, or troubleshooting DefaultAzureCredential failures, DeploymentNotFound errors, skipped deployments, or reasoning-effort errors.
What it loads into context
Frontmatter
230 tokensAlways available to the agent
SKILL.md
2,942 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Registration
- Connection
- Deployments
- Azure AI Speech Formats and Speed
- Responses API and Realtime
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore12,392 bytes
Read SKILL.md
# CrestApps.Core Azure OpenAI
The `CrestApps.Core.AI.OpenAI.Azure` package connects CrestApps.Core to Azure OpenAI (client name `"Azure"`) and to Azure AI Speech (client name `"AzureSpeech"`). Use it for enterprise workloads that need regional data residency, managed identity, or private networking.
## Guidelines
- Keep the endpoint and credentials on the connection; keep the Azure deployment name and its capabilities on the deployment.
- Always set `AuthenticationType` on an Azure connection. When it is empty the provider uses `DefaultAzureCredential`, even if an `ApiKey` is present.
- Every configured deployment must declare `Features`. An entry with no features and no legacy `Purpose`/`Type` is skipped with the warning "declares no model capabilities".
- Resolve deployments through slots with `IAIDeploymentManager.ResolveSlotAsync(AIDeploymentSlotNames.X, ...)`.
- See `crestapps-core-openai` for the shared `ChatApi`, feature, and slot details, and `crestapps-core-realtime-voice` for voice sessions.
## Registration
View the complete source on GitHubcrestapps-core-chat
When your agent uses it
Skill for building deployment-aware chat completion and streaming loops in CrestApps.Core 2.0. Covers IAICompletionService CompleteAsync and CompleteStreamingAsync with AICompletionContext, resolving chat and utility deployments through slots with ResolveSlotAsync and ResolveUtilityOrDefaultAsync instead of the removed AIDeploymentPurpose, model parameters such as reasoningEffort through AICompletionContext ModelParameters and UtilityModelParameters, IsUtilityCompletion for background work, capability enforcement that strips tools, structured outputs and streaming a deployment does not declare, reasoning requests with tools routed to the Responses API, and running a profile or interaction through IOrchestrationContextBuilder, IOrchestratorResolver and IOrchestrator ExecuteStreamingAsync inside an AIInvocationScope. Use it when writing server code that sends prompts to a model, streams a reply, runs the full orchestration pipeline outside the chat hubs, or upgrades completion code from 1.x.
What it loads into context
Frontmatter
217 tokensAlways available to the agent
SKILL.md
2,187 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Registration
- Stream a Completion
- Background (Utility) Completions
- Run the Full Orchestration Pipeline
- Choose the Surface
- Provider Behavior Worth Knowing
- Upgrading from 1.x
Files
SKILL.mdcore10,516 bytesSKILL.mdcore10,516 bytes
Read SKILL.md
# CrestApps.Core Chat Completions
This skill is the server-side completion and orchestration surface. Persisted conversations, hubs, chat UI and response handlers are covered by `crestapps-core-chat-interactions`; voice sessions by `crestapps-core-realtime-voice`; providers by `crestapps-core-openai`, `crestapps-core-azure-openai`, `crestapps-core-ollama` and `crestapps-core-azure-ai-inference`.
## Guidelines
- CrestApps.Core exposes `IAICompletionService` (namespace `CrestApps.Core.AI.Completions`), not `IChatCompletionService`. It returns Microsoft.Extensions.AI `ChatResponse` and `ChatResponseUpdate`.
- Resolve the `AIDeployment` first, through a slot: `ResolveSlotAsync(AIDeploymentSlotNames.Chat, ...)` for answers and `ResolveUtilityOrDefaultAsync(...)` for background work. Do not construct provider clients in application code.
- Pass an `AICompletionContext` for the system message, sampling, tool selection, data source, and model parameters.
- Use `IOrchestrator.ExecuteStreamingAsync(...)` when the request needs a profile's tools, agents, RAG, MCP connections, or progressive tool scoping.
- The deployment's declared capabilities are enforced on every request. Tools, a JSON response format, reasoning options and streaming are removed or downgraded when the deployment does not declare `toolCalling`, `structuredOutputs`, `reasoning` or `streaming`.
## Registration
View the complete source on GitHubcrestapps-core-chat-interactions
When your agent uses it
Skill for Chat Interactions and the shared chat hubs and chat UI in CrestApps.Core 2.0. Covers AddChatInteractions with AddEntityCoreStores or AddYesSqlStores, ConfigureVisitorIdentity, ConfigureChatRateLimiting and ConfigureChatHubOptions, subclassing ChatInteractionHubBase and AIChatHubCore with AuthorizeAsync, AuthorizeProfileAsync and the other override hooks, the ChatInteraction model with chat, utility and conversation deployment names, IChatInteractionSettingsHandler, SaveSettings filter validation, send-time tool access checks through IAIToolAccessEvaluator, input-boundary delimiters, document upload endpoints, the IChatInteractionHubClient contract, the @crestapps/ai-chat-ui scripts with chat-markers, the stacked image carousel, assistant name and avatar, and upgrading from 1.x. Use it to stand up the fastest chat playground for a provider, build a chat page or widget, extend interaction settings, or troubleshoot chat hubs and chat UI.
What it loads into context
Frontmatter
231 tokensAlways available to the agent
SKILL.md
3,158 tokensWhen the skill is activated
Reference documents
1,051 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Registration
- Host the Hub
- The Interaction and Its Settings
- Security Behavior
- Documents
- Chat UI Assets
- Upgrading from 1.x
Files
SKILL.mdcore14,092 bytesSKILL.mdcore14,092 bytesreferences/chat-interactions-examples.mddoc5,188 bytes
Read SKILL.md
# CrestApps.Core Chat Interactions
A **Chat Interaction** is an operator-controlled conversation that needs no AI Profile: the interaction itself stores its deployments, system message, sampling, tools, agents, MCP connections, data source and documents. It is the fastest way to validate a provider and deployment. **AI Chat sessions** (`AIChatSession`) are the profile-based equivalent used by end-user chat pages and widgets. Both ship in `CrestApps.Core.AI.Chat` and share the same chat UI scripts.
## Guidelines
- Start with Chat Interactions to validate a connection and deployment, then move reusable behavior into an AI Profile (`crestapps-core-ai-profiles`).
- Register stores for `ChatInteraction` and `IChatInteractionPromptStore` on the chat interactions builder.
- The framework does not ship a mapped hub. Subclass `ChatInteractionHubBase` (and `AIChatHubCore<TClient>` for sessions), map it, and call `ConfigureChatHubOptions<THub>()` for each concrete hub.
- The hubs' authorization hooks return `true` by default. Override them or put `[Authorize]` on the hub.
- Chat Interactions do not get the AI Profile prompt-security preamble or injection blocking (the operator controls the prompt), but they do get input-boundary delimiters and a per-user tool access check at send time.
- Use `crestapps-core-chat` for server-side completion code, `crestapps-core-signalr` for hub routes and authentication, and `crestapps-core-realtime-voice` for voice sessions.
## RegistrationView the complete source on GitHubcrestapps-core-claude-orchestrator
When your agent uses it
Skill for the Claude orchestrator in CrestApps.Core 2.0, a named IOrchestrator ("anthropic") built on the official Anthropic C# SDK. Covers AddClaudeOrchestrator and AddCoreAIClaudeOrchestrator registration, binding ClaudeOptions (ApiKey, BaseUrl, DefaultModel) yourself because the package reads no configuration section, the ClaudeOptionsValidator and the requirement that both ApiKey and DefaultModel are set, per-profile and per-interaction overrides with ClaudeSessionMetadata ClaudeModel and ClaudeEffortLevel, ClaudeClientService model discovery, resolving it with IOrchestratorResolver, tool scoping and function invocation, and Anthropic usage metering through AIUsageMetering. Use it when running AI profiles or chat interactions on Anthropic Claude models, or when Claude reports it is not configured.
What it loads into context
Frontmatter
206 tokensAlways available to the agent
SKILL.md
1,258 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Registration
- Registered Services
- Use It
- How a Turn Runs
- Model Discovery
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore5,425 bytes
Read SKILL.md
# CrestApps.Core Claude Orchestrator
`CrestApps.Core.AI.Claude` adds `ClaudeOrchestrator`, an `IOrchestrator` named `"anthropic"` (title **Claude**). It talks to Anthropic through the official `Anthropic` NuGet package, so there is no CLI or external executable to install.
## Guidelines
- Use it when a profile or chat interaction should run on Anthropic models with the CrestApps tool pipeline. Claude does not use AI connections or deployments; the model comes from `ClaudeSessionMetadata.ClaudeModel` or `ClaudeOptions.DefaultModel`.
- The package does not bind configuration. Bind `ClaudeOptions` from your own section or site settings.
- Both `ApiKey` and `DefaultModel` must be set, or every turn answers "Claude is not configured and cannot be used until it has been configured." A per-profile model override does not replace the default-model requirement.
- Deployment model parameters such as `reasoningEffort` do not apply; Claude uses `ClaudeEffortLevel` on the session metadata.
## Registration
```csharpView the complete source on GitHubcrestapps-core-context-builders
When your agent uses it
Skill for enriching CrestApps.Core 2.0 completion and orchestration contexts with handler pipelines. Covers IAICompletionContextBuilder and IAICompletionContextBuilderHandler producing AICompletionContext, IOrchestrationContextBuilder and IOrchestrationContextBuilderHandler producing OrchestrationContext, the BuildingAsync, configure delegate and BuiltAsync phases, reverse registration order, the built-in profile, chat interaction, persona, tool instance, data source and MCP handlers, chat and utility model parameters copied onto the context, SystemMessageBuilder, reading the chat from AIInvocationScope during a build, error isolation that logs and skips a failing handler, and one-off configuration through the caller delegate. Use it when injecting tenant, user or policy context into every AI request, adding orchestration behavior, or debugging a profile whose system message, tools or parameters vanish.
What it loads into context
Frontmatter
204 tokensAlways available to the agent
SKILL.md
1,825 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Built-in Handlers
- Completion Context Handler
- Orchestration Context Handler
- Reading the Current Chat
- Model Parameters on the Context
- Build Explicitly
- Upgrading from 1.x
Files
SKILL.mdcore8,782 bytesSKILL.mdcore8,782 bytesSKILL.mdcore8,782 bytesSKILL.mdcore8,782 bytes
Read SKILL.md
# CrestApps.Core Context Builders
Two handler pipelines prepare every AI request:
| Level | Builder | Handler | Produces |
|---|---|---|---|
| Completion | `IAICompletionContextBuilder.BuildAsync(resource, configure, cancellationToken)` | `IAICompletionContextBuilderHandler` | `AICompletionContext` (deployments, system message, tools, agents, model parameters, data source) |
| Orchestration | `IOrchestrationContextBuilder.BuildAsync(resource, configure, cancellationToken)` | `IOrchestrationContextBuilderHandler` | `OrchestrationContext` (user message, history, documents, `SystemMessageBuilder`, completion context) |
## Guidelines
- Use a completion handler for anything every completion of a resource needs, including non-orchestrated calls and sub-agents. Use an orchestration handler for work that only belongs to orchestrated chat.
- Both builders run `BuildingAsync` on every handler, then the caller's `configure` delegate, then `BuiltAsync` on every handler.
- Handlers run in reverse registration order: the last registered runs first. Register an override after the handler whose values it replaces.View the complete source on GitHubcrestapps-core-copilot-orchestrator
When your agent uses it
Skill for the GitHub Copilot orchestrator in CrestApps.Core 2.0, a named IOrchestrator ("copilot") built on the GitHub Copilot SDK. Covers AddCopilotOrchestrator and AddCoreAICopilotOrchestrator registration, the automatic Copilot CLI acquisition with its shared cache and npm registry MSBuild properties, binding CopilotOptions yourself, the NotConfigured, GitHubOAuth and ApiKey (BYOK) authentication modes and what each requires, implementing ICopilotCredentialStore or using JsonFileCopilotCredentialStore, GitHubOAuthService authorization, callback state validation, token refresh and model listing, CopilotSessionMetadata model, permission and reasoning-effort overrides, how tools reach the SDK, and its limits around MCP tools, deployments and usage metering. Use it when running profiles on a Copilot subscription or an OpenAI-compatible BYOK endpoint through Copilot, or when Copilot reports it is not configured.
What it loads into context
Frontmatter
234 tokensAlways available to the agent
SKILL.md
2,060 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Registration
- Authentication Modes
- Credential Store
- OAuth Flow
- Session Metadata
- How a Turn Runs
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore8,858 bytes
Read SKILL.md
# CrestApps.Core Copilot Orchestrator
`CrestApps.Core.AI.Copilot` adds `CopilotOrchestrator`, an `IOrchestrator` named `"copilot"` (title **Copilot**), which runs a turn through the GitHub Copilot SDK and its CLI instead of the default pipeline.
## Guidelines
- Choose GitHub OAuth when each user brings a Copilot subscription. Choose `ApiKey` (BYOK) for one shared OpenAI-compatible, Azure or Anthropic endpoint.
- Treat `NotConfigured` as intentionally disabled; editors should show a warning instead of Copilot fields while it is selected.
- Bind `CopilotOptions` yourself; the package reads no configuration section.
- GitHub OAuth needs an `ICopilotCredentialStore`. BYOK does not.
- Copilot does not use AI connections, deployments, deployment capabilities or deployment model parameters, and its SDK-managed requests are not recorded by usage metering.
## Registration
View the complete source on GitHubcrestapps-core-custom-tools
When your agent uses it
Skill for code-defined AI tools in CrestApps.Core 2.0. Covers implementing AIFunction tools with a JSON schema, registering them with AddCoreAITool and the AIToolBuilder (WithTitle, WithDescription, WithCategory, WithPurpose, WithDependency, Selectable, Hidden), system versus selectable versus hidden tools, AIToolPurposes values, tool dependencies, returning errors instead of throwing, rich MCP results with IAIToolContentProvider, custom IToolRegistryProvider sources and ToolRegistryEntry, tool authorization where the AI Profile is the boundary for sessions and IAIToolAccessEvaluator re-checks Chat Interaction tools, IUserAccessor for the caller, and how tools relate to tool instances, agents and MCP server exposure. Use it when giving the model a new callable function, controlling which tools a profile or user can reach, or troubleshooting tools that never reach the model.
What it loads into context
Frontmatter
213 tokensAlways available to the agent
SKILL.md
2,250 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Registration
- Tool Example
- Dependencies
- Rich Results for MCP Clients
- Custom Registry Provider
- Tool Authorization
- MCP Server Exposure
- Upgrading from 1.x
Files
SKILL.mdcore10,632 bytes
Read SKILL.md
# CrestApps.Core Custom Tools
A code-defined tool is a Microsoft.Extensions.AI `AIFunction` registered under a name. The orchestrator adds it to requests through the tool registry; the model supplies all its arguments. Use tool instances (`crestapps-core-tool-instances`) when end users configure the tool, and agents (`crestapps-core-ai-agents`) when the callable thing is a whole profile.
## Guidelines
- Inherit from `AIFunction` and override `Name`, `Description`, `JsonSchema` and `InvokeCoreAsync`.
- Register with `AddCoreAITool<TTool>(name)`. Tools are singletons, also registered as keyed `AITool` services under the name.
- A tool is a **system** tool by default (hidden from pickers, added by the orchestrator by purpose or context). Call `.Selectable()` for tools users attach to profiles, and `.Hidden()` for helper tools only explicitly configured profiles or agents may use; hidden tools stay out of picker and shared MCP listings.
- Catch failures and return a descriptive result the model can act on. Never return `null`.
- Purpose values are snake case strings (`content_generation`, not `ContentGeneration`); always use the `AIToolPurposes` constants.
- Resolve scoped services from `AIFunctionArguments.Services`, not from the constructor (the tool is a singleton).
- The deployment must declare `toolCalling`, or capability enforcement removes every tool from the request.
View the complete source on GitHubcrestapps-core-data-sources
When your agent uses it
Skill for CrestApps.Core 2.0 AI data sources and search-backed RAG in any ASP.NET Core host. Covers the AIDataSource source and knowledge-base model, the SearchIndexProfile, Elasticsearch, AzureAISearch, PostgreSQL, Web and File source types, AddAIDataSources and AddCoreAIDataSourceRag, the asynchronous synchronization queue and IAIDataSourceChangeNotifier, custom IAIDataSourceSourceHandler implementations, typed knowledge columns contentType, rootId, parentId and page, OData filters and IODataFilterTranslator, AIDataSourceRagMetadata including ObjectTypes, the data source search tool instance source with Chunk and Hierarchical retrieval and ContentTypes, figure citations, and upgrading from the Ingested source type.
What it loads into context
Frontmatter
188 tokensAlways available to the agent
SKILL.md
2,349 tokensWhen the skill is activated
Reference documents
1,236 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Source Types
- Registration
- Synchronization
- Custom Sources
- Typed Knowledge Columns
- Retrieval Settings
- Data Source Search Tool Instances
- Figures in Answers
- Upgrading from 1.x
Files
SKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesSKILL.mdcore10,283 bytesreferences/custom-source-examples.mddoc5,956 bytes
Read SKILL.md
# CrestApps.Core Data Sources
An `AIDataSource` connects a **source** (where raw documents come from) to a **knowledge base** (a vector index profile holding chunked, embedded rows). AI profiles and chat interactions attach a data source for preemptive RAG and the `search_data_sources` tool, and tool instances can expose several data sources side by side.
Pick a backend skill for the vector store: `crestapps-core-elasticsearch`, `crestapps-core-azure-ai-search` or `crestapps-core-postgresql`. For uploads see `crestapps-core-document-processing`. For the record types that fill `Web` and `File` data sources see `crestapps-core-web-crawlers` and `crestapps-core-file-sources`.
## Source Types
`AIDataSourceSourceTypes` (namespace `CrestApps.Core.AI.Models`):
| Constant | Reads | Kept in step by |
|---|---|---|
| `SearchIndexProfile` | a CrestApps-managed source index profile | automatic, when writes go through `ISearchDocumentManager` |
| `Elasticsearch` | an external Elasticsearch index with per-data-source credentials | `IAIDataSourceChangeNotifier` |View the complete source on GitHubcrestapps-core-data-storage
When your agent uses it
Skill for choosing and registering CrestApps.Core 2.0 persistence. Covers picking Entity Framework Core (CrestApps.Core.Data.EntityCore) or YesSql (CrestApps.Core.Data.YesSql), registering the backing data store on the root builder, per-feature AddEntityCoreStores and AddYesSqlStores calls on the AI suite, personas, chat interactions, document processing, memory, tool instances, A2A, MCP and indexing builders, the service-collection store calls for web crawlers, file sources, knowledge objects and ingestion item state, what the null fallback stores mean, commit boundaries through IStoreCommitter, how configuration and database deployments merge, and writing a custom backend. Use it when a host needs durable profiles, sessions, documents, connections, deployments, or crawler and file-source state.
What it loads into context
Frontmatter
197 tokensAlways available to the agent
SKILL.md
2,178 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Guidelines
- Entity Framework Core
- YesSql
- What Each Store Call Registers
- Configuration and Database Records
- Custom Backend
- Upgrading from 1.x
Files
SKILL.mdcore9,326 bytesSKILL.mdcore9,326 bytesSKILL.mdcore9,326 bytesSKILL.mdcore9,326 bytesSKILL.mdcore9,326 bytesSKILL.mdcore9,326 bytesSKILL.mdcore9,326 bytesSKILL.mdcore9,326 bytes
Read SKILL.md
# CrestApps.Core Data Storage
You are a CrestApps.Core expert. Help the host choose a backend and register exactly the stores each enabled feature needs.
## Guidelines
- Choose Entity Framework Core when the host already uses EF Core or wants any EF relational provider. Choose YesSql when the host wants a document store with collections and map indexes (as Orchard Core does).
- Register the backing store once on the root builder: `.AddEntityCoreSqliteDataStore(...)` / `.AddEntityCoreDataStore(...)`, or `.AddYesSqlDataStore(...)`. The per-feature `Add*Stores()` calls only select stores; they never create the `DbContext` or `IStore`.
- Call the store method on every feature builder you enable. One call does not cover other features.
- Without a store package, connections and deployments come only from configuration and `ISearchIndexProfileStore` falls back to a null store, but nothing registers `IAIProfileStore`, the chat session stores, or the `ChatInteraction` catalog. Register a store before resolving `IAIProfileManager`, chat sessions, or Chat Interactions.
- Every write path needs a commit boundary (`IStoreCommitter`); see `crestapps-core-foundations`.
- Create the schema before serving requests: `InitializeEntityCoreSchemaAsync()` for EF Core, or the `Create*IndexSchemaAsync` extensions for YesSql.
## Entity Framework CoreView the complete source on GitHubcrestapps-core-document-agents
When your agent uses it
Skill for the CrestApps.Core 2.0 document system agents that create, edit, preview and export files inside a conversation. Covers the Presentation Agent registered by AddOpenXml, the Word Agent registered by AddWord, the PDF Agent registered by AddPdf, and the Tabular Data Agent preview_tabular_data tool, their per-conversation workspaces in IDocumentFileStore, SVG previews returned as fig and doc markers with the download endpoint they need, PresentationAgentOptions, WordAgentOptions, PdfAgentOptions and the preview and composition options, PDF signing with AddPdfSigning and IPdfSigningCertificateProvider, IConversationWorkspaceCleanupHandler, generated file writers with AddGeneratedFileWriter and the requestable flag, and exposure of these agents through A2A and MCP.
What it loads into context
Frontmatter
190 tokensAlways available to the agent
SKILL.md
2,489 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Registration
- Workspaces
- Previews and Downloads
- Options
- PDF Signing
- Cleaning Up Your Own Conversation State
- Generated File Writers
- Exposure Outside the Chat
- Upgrading from 1.x
Files
SKILL.mdcore11,382 bytes
Read SKILL.md
# CrestApps.Core Document Agents
Four code-defined **system agents** work on files for the primary model. Each is always available to orchestration, hidden from AI Profile and Chat Interaction agent pickers, published through an A2A host, and runs its own hidden tools. The primary model delegates every request that produces or changes that kind of file, and every follow-up ("make the title blue"), to the agent. Base document processing is in `crestapps-core-document-processing`.
| Agent | Name | Registered by | Package |
|---|---|---|---|
| Tabular Data Agent | `tabular-data-agent` | `AddDocumentProcessing()` | `CrestApps.Core.AI.Documents` |
| Presentation Agent | `presentation-agent` | `AddOpenXml()` | `CrestApps.Core.AI.Documents.OpenXml` (agent code in `CrestApps.Core.AI.Documents`) |
| Word Agent | `word-agent` | `AddWord()` | `CrestApps.Core.AI.Documents.Word` |
| PDF Agent | `pdf-agent` | `AddPdf()` on the document-processing builder | `CrestApps.Core.AI.Documents.Pdf` |
## Registration
```csharpView the complete source on GitHubcrestapps-core-document-processing
When your agent uses it
Skill for CrestApps.Core 2.0 document processing and the separate ingestion path. Covers AddDocumentProcessing with OpenXml, Pdf, Word and reference downloads, AddCoreAIDocumentIngestion with AddPlainTextReader, AddFigureProcessing, AddFigureBackfill, AddPdf and AddDocumentIntelligence, the IAIDocumentIngestionPipeline and AIDocumentIngestionProcessor extension points, custom IngestionDocumentReader registration, PDF layout analysis with PdfLayoutOptions, figure captions, salience and vision transcription, upload limits through InteractionDocumentOptions and DocumentsMetadata, the document and figure download endpoints, the built-in document and tabular tools, and upgrading 1.x hosts whose types moved to CrestApps.Core.AI.Ingestion.
What it loads into context
Frontmatter
182 tokensAlways available to the agent
SKILL.md
2,838 tokensWhen the skill is activated
Reference documents
2,332 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Two packages, two jobs
- Chat Document Processing
- Ingestion Without Chat
- Custom Readers and Processors
- Upload Limits
- Storage
- Built-in Tools
- Upgrading from 1.x
Files
SKILL.mdcore12,690 bytesSKILL.mdcore12,690 bytesSKILL.mdcore12,690 bytesreferences/ingestion-pipeline.mddoc10,934 bytes
Read SKILL.md
# CrestApps.Core Document Processing
Use this skill when a host lets users upload documents into chat sessions, chat interactions or AI profiles, or when it needs to read files into an AI knowledge base without the chat stack. For the Presentation, Word and PDF agents see `crestapps-core-document-agents`. For scheduled folder and file-server intake see `crestapps-core-file-sources`.
## Two packages, two jobs
| Package | Holds | Register with |
|---|---|---|
| `CrestApps.Core.AI.Ingestion` | readers, the processor pipeline, `IDocumentFileStore`, `IKnowledgeIngestionService` | `AddCoreAIDocumentIngestion(...)` |
| `CrestApps.Core.AI.Ingestion.Pdf` | the PdfPig PDF reader and `PdfLayoutOptions` | `AddPdf()` on the ingestion builder |
| `CrestApps.Core.AI.Documents` | uploads, tabular workspaces, generated files, the chat tools, the Tabular Data Agent | `AddDocumentProcessing(...)` / `AddCoreAIDocumentProcessing()` |
| `CrestApps.Core.AI.Documents.OpenXml` | `.docx`, `.xlsx`, `.pptx`, `.potx` reader, Office writers, Presentation Agent | `AddOpenXml()` |
| `CrestApps.Core.AI.Documents.Pdf` | PDF reader plus PDF writer and PDF Agent | `AddPdf()` on the document-processing builder |
| `CrestApps.Core.AI.Documents.Word` | Word Agent | `AddWord()` |View the complete source on GitHubcrestapps-core-elasticsearch
When your agent uses it
Skill for using Elasticsearch as the CrestApps.Core indexing and vector backend. Covers CrestApps.Core.Elasticsearch and CrestApps.Core.AI.Elasticsearch, AddElasticsearch on the indexing builder with AddAIDocuments, AddAIDataSources and AddAIMemory, AddCoreElasticsearchServices and the lower-level source registrations, ElasticsearchConnectionOptions and authentication types, AddElasticsearchODataFilterTranslator, the filters prefix and typed knowledge columns, in-place schema upgrades through TryAddFieldsAsync, external Elasticsearch source mappings with IAIDataSourceChangeNotifier, and troubleshooting connection, certificate and filter problems.
What it loads into context
Frontmatter
154 tokensAlways available to the agent
SKILL.md
1,335 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Registration
- Configuration
- Filters and Typed Columns
- External Elasticsearch Sources
- Troubleshooting
- Upgrading from 1.x
Files
SKILL.mdcore5,940 bytesSKILL.mdcore5,940 bytesSKILL.mdcore5,940 bytesSKILL.mdcore5,940 bytesSKILL.mdcore5,940 bytesSKILL.mdcore5,940 bytes
Read SKILL.md
# CrestApps.Core Elasticsearch
Use Elasticsearch as the knowledge-base backend for AI documents, AI data sources and AI memory. For the data source model itself see `crestapps-core-data-sources`.
## Registration
```csharp
builder.Services.AddCrestAppsCore(crestApps => crestApps
.AddAISuite(ai => ai.AddOpenAI())
.AddIndexingServices(indexing => indexing
.AddYesSqlStores()
.AddElasticsearch(
builder.Configuration.GetSection("CrestApps:Elasticsearch"),
elasticsearch => elasticsearchView the complete source on GitHubSkills included
- crestapps-core-a2a
- crestapps-core-ai-agents
- crestapps-core-ai-markdown
- crestapps-core-ai-memory
- crestapps-core-ai-model-capabilities
- crestapps-core-ai-personas
- crestapps-core-ai-profiles
- crestapps-core-ai-runtime
- crestapps-core-ai-templates
- crestapps-core-ai-usage-metering
- crestapps-core-aspnet-hosting
- crestapps-core-azure-ai-inference
- crestapps-core-azure-ai-search
- crestapps-core-azure-openai
- crestapps-core-chat
- crestapps-core-chat-interactions
- crestapps-core-claude-orchestrator
- crestapps-core-context-builders
- crestapps-core-copilot-orchestrator
- crestapps-core-custom-tools
- crestapps-core-data-sources
- crestapps-core-data-storage
- crestapps-core-document-agents
- crestapps-core-document-processing
- crestapps-core-elasticsearch
- crestapps-core-entitycore-stores
- crestapps-core-extensible-entities
- crestapps-core-external-relays
- crestapps-core-file-sources
- crestapps-core-foundations
- crestapps-core-mcp
- crestapps-core-mcp-file-resources
- crestapps-core-ollama
- crestapps-core-openai
- crestapps-core-orchestration
- crestapps-core-overview
- crestapps-core-postgresql
- crestapps-core-prompt-security
- crestapps-core-realtime-voice
- crestapps-core-resilience
- crestapps-core-response-handlers
- crestapps-core-sample-hosts
- crestapps-core-signalr
- crestapps-core-templates
- crestapps-core-tool-instances
- crestapps-core-web-crawlers
- crestapps-core-yessql-stores
- orchardcore-addresses
- orchardcore-ai
- orchardcore-ai-a2a-client
- orchardcore-ai-a2a-host
- orchardcore-ai-agent
- orchardcore-ai-chat
- orchardcore-ai-chat-analytics
- orchardcore-ai-chat-claude
- orchardcore-ai-chat-copilot
- orchardcore-ai-chat-interactions
- orchardcore-ai-chat-notifications
- orchardcore-ai-connections
- orchardcore-ai-data-sources
- orchardcore-ai-documents
- orchardcore-ai-documents-azure-storage
- orchardcore-ai-documents-azureai
- orchardcore-ai-documents-elasticsearch
- orchardcore-ai-documents-extractors
- orchardcore-ai-file-sources
- orchardcore-ai-mcp
- orchardcore-ai-mcp-client
- orchardcore-ai-mcp-resources
- orchardcore-ai-mcp-server
- orchardcore-ai-memory
- orchardcore-ai-memory-azureai
- orchardcore-ai-memory-elasticsearch
- orchardcore-ai-model-capabilities
- orchardcore-ai-personas
- orchardcore-ai-profile-builder
- orchardcore-ai-profile-templates
- orchardcore-ai-prompting
- orchardcore-ai-providers
- orchardcore-ai-realtime-voice
- orchardcore-ai-response-handlers
- orchardcore-ai-tool-instances
- orchardcore-ai-tools
- orchardcore-ai-usage-analytics
- orchardcore-ai-web-crawlers
- orchardcore-ai-workflows
- orchardcore-bookings
- orchardcore-carts
- orchardcore-checkout
- orchardcore-classifieds
- orchardcore-commerce
- orchardcore-companies
- orchardcore-contact-center
- orchardcore-content-access-control
- orchardcore-content-transfer
- orchardcore-crestapps-content-fields
- orchardcore-crestapps-recipes
- orchardcore-crestapps-resources
- orchardcore-crestapps-roles
- orchardcore-crestapps-users
- orchardcore-custom-indexing-azureai
- orchardcore-custom-indexing-elasticsearch
- orchardcore-customers
- orchardcore-dnc-registry
- orchardcore-downloads
- orchardcore-fundraising
- orchardcore-inventory
- orchardcore-marketing
- orchardcore-marketplace
- orchardcore-markets
- orchardcore-memberships
- orchardcore-omnichannel
- orchardcore-omnichannel-event-grid
- orchardcore-omnichannel-management
- orchardcore-omnichannel-messaging
- orchardcore-omnichannel-sms
- orchardcore-omnichannel-voice
- orchardcore-orders
- orchardcore-pay-later
- orchardcore-payments
- orchardcore-phone-number-verifications
- orchardcore-phone-numbers
- orchardcore-point-of-sale
- orchardcore-products
- orchardcore-receipts
- orchardcore-report-builder
- orchardcore-reports
- orchardcore-reviews
- orchardcore-shipping
- orchardcore-signalr
- orchardcore-subscriptions
- orchardcore-taxation
- orchardcore-telephony
- orchardcore-telephony-asterisk
- orchardcore-telephony-telnyx
- orchardcore-tenant-hierarchy
- orchardcore-time-zones
- orchardcore-transactions
- orchardcore-websockets
- orchardcore-wizard
- orchardcore-admin
- orchardcore-admin-dashboard
- orchardcore-admin-edit-views
- orchardcore-admin-lists
- orchardcore-admin-menu
- orchardcore-alias
- orchardcore-amazon-s3-media
- orchardcore-antivirus
- orchardcore-archive-later
- orchardcore-asset-manager
- orchardcore-audit-trail
- orchardcore-auto-setup
- orchardcore-autoroute
- orchardcore-azure-ai-search
- orchardcore-azure-data-protection
- orchardcore-azure-key-vault
- orchardcore-azure-media
- orchardcore-background-tasks
- orchardcore-blazor
- orchardcore-breadcrumbs
- orchardcore-caching
- orchardcore-configuration
- orchardcore-content-definition-handlers
- orchardcore-content-fields
- orchardcore-content-items
- orchardcore-content-localization
- orchardcore-content-parts
- orchardcore-content-preview
- orchardcore-content-queries
- orchardcore-content-relationships
- orchardcore-content-types
- orchardcore-contents-admin-list-filters
- orchardcore-contents-api
- orchardcore-cors
- orchardcore-custom-settings
- orchardcore-custom-user-settings
- orchardcore-data
- orchardcore-data-formulas
- orchardcore-data-localization
- orchardcore-data-migrations
- orchardcore-data-pipeline-steps
- orchardcore-data-pipelines
- orchardcore-data-sources
- orchardcore-decoupled-cms
- orchardcore-deferred-tasks
- orchardcore-deployment-remote
- orchardcore-deployments
- orchardcore-diagnostics
- orchardcore-display-management
- orchardcore-docker
- orchardcore-dynamic-cache
- orchardcore-elasticsearch
- orchardcore-email
- orchardcore-email-azure
- orchardcore-email-smtp
- orchardcore-facebook
- orchardcore-features
- orchardcore-feeds
- orchardcore-file-upload-security
- orchardcore-flow-bagpart
- orchardcore-forms
- orchardcore-github-authentication
- orchardcore-google
- orchardcore-graphql
- orchardcore-health-checks
- orchardcore-html
- orchardcore-https
- orchardcore-indexing
- orchardcore-indexing-sources
- orchardcore-layers
- orchardcore-liquid
- orchardcore-lists
- orchardcore-localization
- orchardcore-localization-source
- orchardcore-logging-serilog
- orchardcore-lucene
- orchardcore-markdown
- orchardcore-media
- orchardcore-media-gallery
- orchardcore-media-slugify
- orchardcore-menus
- orchardcore-microsoft-auth
- orchardcore-mini-profiler
- orchardcore-module-creator
- orchardcore-modules
- orchardcore-navigation
- orchardcore-notifications
- orchardcore-openapi
- orchardcore-openid
- orchardcore-permission-providers
- orchardcore-placement
- orchardcore-publish-later
- orchardcore-rate-limits
- orchardcore-razor
- orchardcore-recaptcha
- orchardcore-recipes
- orchardcore-redis
- orchardcore-resources
- orchardcore-reverse-proxy
- orchardcore-rules
- orchardcore-sanitizer
- orchardcore-scripting
- orchardcore-search-indexing
- orchardcore-search-providers
- orchardcore-security
- orchardcore-seo
- orchardcore-setup
- orchardcore-shape-discovery
- orchardcore-shapes
- orchardcore-shells
- orchardcore-shortcodes
- orchardcore-site-settings
- orchardcore-sitemaps
- orchardcore-sms
- orchardcore-sms-azure
- orchardcore-source-generators
- orchardcore-spatial
- orchardcore-sql-indexing
- orchardcore-startup-code
- orchardcore-taxonomies
- orchardcore-temp-file-storage
- orchardcore-templates
- orchardcore-tenants
- orchardcore-tester
- orchardcore-theme-creator
- orchardcore-theming
- orchardcore-twitter
- orchardcore-unit-test
- orchardcore-url-rewriting
- orchardcore-users-admin-list-filters
- orchardcore-users-roles
- orchardcore-widgets
- orchardcore-workflows
- orchardcore-xml-rpc
- orchardcore-yessql-indexes
- crestapps-core-a2a
- crestapps-core-ai-agents
- crestapps-core-ai-markdown
- crestapps-core-ai-memory
- crestapps-core-ai-model-capabilities
- crestapps-core-ai-personas
- crestapps-core-ai-profiles
- crestapps-core-ai-runtime
- crestapps-core-ai-templates
- crestapps-core-ai-usage-metering
- crestapps-core-aspnet-hosting
- crestapps-core-azure-ai-inference
- crestapps-core-azure-ai-search
- crestapps-core-azure-openai
- crestapps-core-chat
- crestapps-core-chat-interactions
- crestapps-core-claude-orchestrator
- crestapps-core-context-builders
- crestapps-core-copilot-orchestrator
- crestapps-core-custom-tools
- crestapps-core-data-sources
- crestapps-core-data-storage
- crestapps-core-document-agents
- crestapps-core-document-processing
- crestapps-core-elasticsearch
Showing 300 of 550 skills. See GitHub for the complete repository.
Repository facts
- License
- MIT
- Created
- Feb 6, 2026
- Last pushed
- Oct 21, 2026
- Forks
- 4
- Open issues
- 0
- Project activity
- Active
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 6, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 920 notes
plugins/crestapps-core/skills/crestapps-core-ai-markdown/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/crestapps-core/skills/crestapps-core-ai-markdown/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/crestapps-core/skills/crestapps-core-ai-markdown/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/crestapps-core/skills/crestapps-core-ai-markdown/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/crestapps-core/skills/crestapps-core-aspnet-hosting/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/crestapps-core/skills/crestapps-core-azure-ai-search/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/crestapps-core/skills/crestapps-core-azure-ai-search/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/crestapps-core/skills/crestapps-core-azure-ai-search/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/crestapps-core/skills/crestapps-core-azure-ai-search/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/crestapps-core/skills/crestapps-core-azure-ai-search/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/crestapps-core/skills/crestapps-core-chat/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/crestapps-core/skills/crestapps-core-chat-interactions/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/crestapps-core/skills/crestapps-core-context-builders/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/crestapps-core/skills/crestapps-core-context-builders/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/crestapps-core/skills/crestapps-core-context-builders/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/crestapps-core/skills/crestapps-core-data-sources/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/crestapps-core/skills/crestapps-core-data-sources/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/crestapps-core/skills/crestapps-core-data-sources/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/crestapps-core/skills/crestapps-core-data-sources/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/crestapps-core/skills/crestapps-core-data-sources/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- 38 dangerous shell commandsin 12 files: orchardcore-tester/SKILL.md:38 orchardcore-tester/SKILL.md:38 orchardcore-tester/references/setup-wizard.md:62 and 9 more
- 1,188 network referencesin 211 files: orchardcore-tester/SKILL.md:43 orchardcore-tester/SKILL.md:43 orchardcore-openid/references/openid-examples.md:47 and 208 more
- No hidden or obfuscated text
- No instruction overrides
- No executable scripts
- 20 references to secretsin 14 files: crestapps-core-signalr/SKILL.md:108 orchardcore-openid/references/openid-examples.md:201 orchardcore-users-roles/SKILL.md:214 and 11 more
- No requests to vote in Hot
Show all 1,246 signals by file
.claude-plugin/marketplace.json
- Network accessline 15
"description": "Orchard Core framework skills for GitHub Copilot CLI backed by CrestApps.AgentSkills.", "version": "1.0.11", "homepage": "https://github.com/CrestApps/CrestApps.AgentSkills/tree/main/plugins/orchardcore", - Network accessline 16
"version": "1.0.11", "homepage": "https://github.com/CrestApps/CrestApps.AgentSkills/tree/main/plugins/orchardcore", "repository": "https://github.com/CrestApps/CrestApps.AgentSkills", - Network accessline 17
"homepage": "https://github.com/CrestApps/CrestApps.AgentSkills/tree/main/plugins/orchardcore", - Network accessline 18
"repository": "https://github.com/CrestApps/CrestApps.AgentSkills", - Network accessline 39
"description": "CrestApps OrchardCore module skills for GitHub Copilot CLI backed by CrestApps.AgentSkills.", "version": "2.0.7", "homepage": "https://github.com/CrestApps/CrestApps.AgentSkills/tree/main/plugins/crestapps-orchar - Network accessline 40
"version": "2.0.7", "homepage": "https://github.com/CrestApps/CrestApps.AgentSkills/tree/main/plugins/crestapps-orchardcore", "repository": "https://github.com/CrestApps/CrestApps.AgentSkills", - Network accessline 41
"homepage": "https://github.com/CrestApps/CrestApps.AgentSkills/tree/main/plugins/crestapps-orchardcore", - Network accessline 42
"repository": "https://github.com/CrestApps/CrestApps.AgentSkills", - Network accessline 65
"description": "CrestApps.Core skills for GitHub Copilot CLI backed by CrestApps.AgentSkills.", "version": "1.0.4", "homepage": "https://github.com/CrestApps/CrestApps.AgentSkills/tree/main/plugins/crestapps-core", - Network accessline 66
"version": "1.0.4", "homepage": "https://github.com/CrestApps/CrestApps.AgentSkills/tree/main/plugins/crestapps-core", "repository": "https://github.com/CrestApps/CrestApps.AgentSkills", - Network accessline 67
"homepage": "https://github.com/CrestApps/CrestApps.AgentSkills/tree/main/plugins/crestapps-core", - Network accessline 68
"repository": "https://github.com/CrestApps/CrestApps.AgentSkills",
plugins/crestapps-core/skills/crestapps-core-a2a/SKILL.md
- Network accessline 38
{ DisplayText = "Legal Review Agent", Endpoint = "https://agents.example.com/", - Network accessline 39
DisplayText = "Legal Review Agent", Endpoint = "https://agents.example.com/", }; - Network accessline 40
Endpoint = "https://agents.example.com/", - Network accessline 147
"version": "1.0", "supportedInterfaces": [ { "url": "https://agents.example.com/a2a?agent=legal-review", "protocolBinding": "JSONRPC", "protocolVersion": "1.0" } - Network accessline 148
"supportedInterfaces": [ { "url": "https://agents.example.com/a2a?agent=legal-review", "protocolBinding": "JSONRPC", "protocolVersion": "1.0" } ], - Network accessline 149
{ "url": "https://agents.example.com/a2a?agent=legal-review", "protocolBinding": "JSONRPC", "protocolVersion": "1.0" }
plugins/crestapps-core/skills/crestapps-core-azure-ai-inference/SKILL.md
- Network accessline 53
"Name": "github-models", "ClientName": "AzureAIInference", "Endpoint": "https://models.inference.ai.azure.com", - Network accessline 54
"ClientName": "AzureAIInference", "Endpoint": "https://models.inference.ai.azure.com", "AuthenticationType": "ApiKey", - Network accessline 55
"Endpoint": "https://models.inference.ai.azure.com", - Network accessline 60
"Name": "foundry", "ClientName": "AzureAIInference", "Endpoint": "https://your-project.inference.ai.azure.com", - Network accessline 61
"ClientName": "AzureAIInference", "Endpoint": "https://your-project.inference.ai.azure.com", "AuthenticationType": "ManagedIdentity" - Network accessline 62
"Endpoint": "https://your-project.inference.ai.azure.com",
plugins/crestapps-core/skills/crestapps-core-azure-ai-search/SKILL.md
- Network accessline 43
"CrestApps": { "AzureAISearch": { "Endpoint": "https://my-search.search.windows.net", - Network accessline 44
"AzureAISearch": { "Endpoint": "https://my-search.search.windows.net", "AuthenticationType": "Default", - Network accessline 45
"Endpoint": "https://my-search.search.windows.net",
plugins/crestapps-core/skills/crestapps-core-azure-openai/SKILL.md
- Network accessline 53
"Name": "azure-production", "ClientName": "Azure", "Endpoint": "https://my-resource.openai.azure.com/", - Network accessline 54
"ClientName": "Azure", "Endpoint": "https://my-resource.openai.azure.com/", "AuthenticationType": "ApiKey", - Network accessline 55
"Endpoint": "https://my-resource.openai.azure.com/", - Network accessline 60
"Name": "azure-managed", "ClientName": "Azure", "Endpoint": "https://my-resource.openai.azure.com/", - Network accessline 61
"ClientName": "Azure", "Endpoint": "https://my-resource.openai.azure.com/", "AuthenticationType": "ManagedIdentity", - Network accessline 62
"Endpoint": "https://my-resource.openai.azure.com/", - Network accessline 147
"ClientName": "AzureSpeech", "Name": "azure-tts", "Endpoint": "https://eastus.tts.speech.microsoft.com", - Network accessline 148
"Name": "azure-tts", "Endpoint": "https://eastus.tts.speech.microsoft.com", "AuthenticationType": "ApiKey", - Network accessline 149
"Endpoint": "https://eastus.tts.speech.microsoft.com", - Network accessline 155
"ClientName": "AzureSpeech", "Name": "azure-stt", "Endpoint": "https://eastus.stt.speech.microsoft.com", - Network accessline 156
"Name": "azure-stt", "Endpoint": "https://eastus.stt.speech.microsoft.com", "AuthenticationType": "ApiKey", - Network accessline 157
"Endpoint": "https://eastus.stt.speech.microsoft.com",
plugins/crestapps-core/skills/crestapps-core-chat-interactions/SKILL.md
- Network accessline 148
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@crestapps/ai-chat-ui/dist/chat-widget.min.css" /> - Network accessline 149
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@crestapps/ai-chat-ui/dist/chat-image-carousel.min.css" /> - Network accessline 151
<script src="https://cdn.jsdelivr.net/npm/@microsoft/signalr@10.0.11/dist/browser/signalr.min.js" - Network accessline 152
integrity="sha384-N+pL/4qXZHZcvsa6hVMd5/7cdF3lC59ZMNHeQyRo5q9jmC7yw0hcJILPjUDSU7ZS" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script> - Network accessline 153
crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/vue@3/dist/vue.global.prod.js"></script> - Network accessline 154
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script> - Network accessline 155
<script src="https://cdn.jsdelivr.net/npm/vue@3/dist/vue.global.prod.js"></script> - Network accessline 156
<script src="https://cdn.jsdelivr.net/npm/dompurify@3/dist/purify.min.js"></script> - Network accessline 157
<script src="https://cdn.jsdelivr.net/npm/@crestapps/ai-chat-ui/dist/chat-markers.min.js"></script> - Network accessline 158
<script src="https://cdn.jsdelivr.net/npm/@crestapps/ai-chat-ui/dist/chat-image-carousel.min.js"></script> - Network accessline 159
<script src="https://cdn.jsdelivr.net/npm/@crestapps/ai-chat-ui/dist/ai-chat.min.js"></script>
plugins/crestapps-core/skills/crestapps-core-claude-orchestrator/SKILL.md
plugins/crestapps-core/skills/crestapps-core-copilot-orchestrator/SKILL.md
plugins/crestapps-core/skills/crestapps-core-document-agents/SKILL.md
- Network accessline 41
options.CertificatePath = builder.Configuration["Pdf:CertificatePath"]; options.CertificatePassword = builder.Configuration["Pdf:CertificatePassword"]; options.TimestampAuthorityUrl = "https://timestamp.examp - Network accessline 42
options.CertificatePassword = builder.Configuration["Pdf:CertificatePassword"]; options.TimestampAuthorityUrl = "https://timestamp.example.com"; }) - Network accessline 43
options.TimestampAuthorityUrl = "https://timestamp.example.com";
plugins/crestapps-core/skills/crestapps-core-elasticsearch/SKILL.md
plugins/crestapps-core/skills/crestapps-core-ollama/SKILL.md
- Network accessline 53
"Name": "local-ollama", "ClientName": "Ollama", "Endpoint": "http://localhost:11434" - Network accessline 54
"ClientName": "Ollama", "Endpoint": "http://localhost:11434" } - Network accessline 55
"Endpoint": "http://localhost:11434" - Network accessline 135
docker exec -it ollama ollama pull llama3.1 docker exec -it ollama ollama pull nomic-embed-text curl http://localhost:11434/api/tags - Network accessline 137
curl http://localhost:11434/api/tags - Network accessline 144
- **`Endpoint` errors when the first chat runs**: the connection has no `Endpoint`. Add `http://localhost:11434` or the server URL.
plugins/crestapps-core/skills/crestapps-core-openai/SKILL.md
plugins/crestapps-core/skills/crestapps-core-overview/SKILL.md
- Access to secretsline 67
[Credential-related source omitted]
plugins/crestapps-core/skills/crestapps-core-realtime-voice/references/realtime-voice-examples.md
- Network accessline 228
<script src="https://cdn.jsdelivr.net/npm/@crestapps/ai-chat-ui/dist/realtime-audio.min.js"></script>
plugins/crestapps-core/skills/crestapps-core-response-handlers/SKILL.md
plugins/crestapps-core/skills/crestapps-core-sample-hosts/SKILL.md
- Network accessline 35
- The MVC host listens on `https://localhost:5100` and the Blazor host on `https://localhost:5200` from their launch profiles. Under Aspire they use `https://localhost:7150` and `https://localhost:5201`, which the MCP and A2A clients target
plugins/crestapps-core/skills/crestapps-core-signalr/SKILL.md
plugins/crestapps-core/skills/crestapps-core-web-crawlers/SKILL.md
- Network accessline 61
crawler.Put(new SitemapWebCrawlerMetadata { BaseUrl = "https://docs.example.com", - Network accessline 62
{ BaseUrl = "https://docs.example.com", SitemapUrl = null, // optional; resolved from robots.txt and conventional paths - Network accessline 63
BaseUrl = "https://docs.example.com", - Network accessline 66
MaxConcurrentRequests = 4, RequestTimeoutSeconds = 30, IncludeUrlPatterns = ["^https://docs\\.example\\.com/guides/"], - Network accessline 67
RequestTimeoutSeconds = 30, IncludeUrlPatterns = ["^https://docs\\.example\\.com/guides/"], ExcludeUrlPatterns = ["/changelog/"], - Network accessline 68
IncludeUrlPatterns = ["^https://docs\\.example\\.com/guides/"],
plugins/crestapps-orchardcore/skills/orchardcore-ai-a2a-client/SKILL.md
- Network accessline 42
1. Open **Artificial Intelligence → Agent to Agent Hosts** and click **Add Connection**. 2. Enter a **Title**, the host **Endpoint** (for example `https://agents.example.com`), and an **Authentication** method. - Network accessline 43
2. Enter a **Title**, the host **Endpoint** (for example `https://agents.example.com`), and an **Authentication** method. - Network accessline 70
{ "DisplayText": "Production agent hub", "Endpoint": "https://agents.example.com", - Network accessline 71
"DisplayText": "Production agent hub", "Endpoint": "https://agents.example.com", "Properties": { - Network accessline 72
"Endpoint": "https://agents.example.com",
plugins/crestapps-orchardcore/skills/orchardcore-ai-a2a-host/SKILL.md
- Network accessline 96
"description": "Researches topics and returns sourced summaries.", "supportedInterfaces": [ { "url": "https://example.com/a2a?agent=research-agent", "protocolBinding": "JSONRPC" } - Network accessline 97
"supportedInterfaces": [ { "url": "https://example.com/a2a?agent=research-agent", "protocolBinding": "JSONRPC" } ], - Network accessline 98
{ "url": "https://example.com/a2a?agent=research-agent", "protocolBinding": "JSONRPC" }
plugins/crestapps-orchardcore/skills/orchardcore-ai-chat-claude/SKILL.md
- Network accessline 74
"AI": { "Claude": { "BaseUrl": "https://api.anthropic.com", - Network accessline 75
"Claude": { "BaseUrl": "https://api.anthropic.com", "DefaultModel": "claude-sonnet-4-5" - Network accessline 76
"BaseUrl": "https://api.anthropic.com", - Network accessline 84
The configuration key is `CrestApps:AI:Claude` (`ApiKey`, `BaseUrl` default `https://api.anthropic.com`, `DefaultModel`). This module binds `ClaudeOptions` from that section before it reads tenant site settings. The example above is a tenan
plugins/crestapps-orchardcore/skills/orchardcore-ai-chat-copilot/SKILL.md
- Network accessline 74
"AuthenticationType": "ApiKey", "ProviderType": "openai", "BaseUrl": "https://api.openai.com/v1", - Network accessline 75
"ProviderType": "openai", "BaseUrl": "https://api.openai.com/v1", "DefaultModel": "gpt-4o", - Network accessline 76
"BaseUrl": "https://api.openai.com/v1", - Network accessline 93
1. Create a GitHub OAuth App. 2. Set its callback URL to `https://your-domain.example/copilot/OAuthCallback`. - Network accessline 94
2. Set its callback URL to `https://your-domain.example/copilot/OAuthCallback`.
plugins/crestapps-orchardcore/skills/orchardcore-ai-chat-interactions/references/ai-chat-interactions-examples.md
plugins/crestapps-orchardcore/skills/orchardcore-ai-chat/SKILL.md
plugins/crestapps-orchardcore/skills/orchardcore-ai-chat/references/ai-chat-examples.md
- Network accessline 24
"Properties": { "OpenAIConnectionMetadata": { "Endpoint": "https://api.openai.com/v1", - Network accessline 25
[Credential-related source omitted] - Network accessline 26
"Endpoint": "https://api.openai.com/v1", - Network accessline 110
"Properties": { "AzureConnectionMetadata": { "Endpoint": "https://your-resource.openai.azure.com/", - Network accessline 111
"AzureConnectionMetadata": { "Endpoint": "https://your-resource.openai.azure.com/", "AuthenticationType": "ApiKey", - Network accessline 112
"Endpoint": "https://your-resource.openai.azure.com/",
plugins/crestapps-orchardcore/skills/orchardcore-ai-connections/SKILL.md
- Network accessline 79
"Properties": { "OpenAIConnectionMetadata": { "Endpoint": "https://api.openai.com/v1", - Network accessline 80
[Credential-related source omitted] - Network accessline 81
"Endpoint": "https://api.openai.com/v1", - Network accessline 90
"Properties": { "AzureConnectionMetadata": { "Endpoint": "https://my-resource.openai.azure.com/", - Network accessline 91
"AzureConnectionMetadata": { "Endpoint": "https://my-resource.openai.azure.com/", "AuthenticationType": "ManagedIdentity", - Network accessline 92
"Endpoint": "https://my-resource.openai.azure.com/", - Network accessline 102
"Properties": { "AzureAIInferenceConnectionMetadata": { "Endpoint": "https://models.inference.ai.azure.com", - Network accessline 103
"AzureAIInferenceConnectionMetadata": { "Endpoint": "https://models.inference.ai.azure.com", "AuthenticationType": "ApiKey", - Network accessline 104
"Endpoint": "https://models.inference.ai.azure.com", - Network accessline 113
"DisplayText": "Local Ollama", "Properties": { "Endpoint": "http://localhost:11434" - Network accessline 114
"Properties": { "Endpoint": "http://localhost:11434" } - Network accessline 115
"Endpoint": "http://localhost:11434" - Network accessline 140
"Name": "azure-openai", "ClientName": "Azure", "Endpoint": "https://my-resource.openai.azure.com/", - Network accessline 141
"ClientName": "Azure", "Endpoint": "https://my-resource.openai.azure.com/", "AuthenticationType": "ApiKey", - Network accessline 142
"Endpoint": "https://my-resource.openai.azure.com/", - Network accessline 147
"Name": "local-ollama", "ClientName": "Ollama", "Endpoint": "http://localhost:11434" - Network accessline 148
"ClientName": "Ollama", "Endpoint": "http://localhost:11434" } - Network accessline 149
"Endpoint": "http://localhost:11434"
plugins/crestapps-orchardcore/skills/orchardcore-ai-data-sources/references/data-sources-examples.md
- Network accessline 89
"ElasticsearchSourceMetadata": { "EnvironmentType": "SelfManaged", "Url": "https://search.example.com:9200", - Network accessline 90
"EnvironmentType": "SelfManaged", "Url": "https://search.example.com:9200", "AuthenticationType": "ApiKey", - Network accessline 91
"Url": "https://search.example.com:9200", - Network accessline 122
"Properties": { "AzureAISearchSourceMetadata": { "Endpoint": "https://contoso.search.windows.net", - Network accessline 123
"AzureAISearchSourceMetadata": { "Endpoint": "https://contoso.search.windows.net", "AuthenticationType": "ManagedIdentity", - Network accessline 124
"Endpoint": "https://contoso.search.windows.net", - Network accessline 199
"CrestApps": { "Elasticsearch": { "Url": "http://localhost:9200", - Network accessline 200
"Elasticsearch": { "Url": "http://localhost:9200", "AuthenticationType": "Basic", - Network accessline 201
"Url": "http://localhost:9200", - Network accessline 207
"DataSources": { "Elasticsearch": { "Url": "http://reporting:9200" - Network accessline 208
"Elasticsearch": { "Url": "http://reporting:9200" } - Network accessline 209
"Url": "http://reporting:9200"
plugins/crestapps-orchardcore/skills/orchardcore-ai-mcp-client/SKILL.md
- Network accessline 44
1. Open **Artificial Intelligence → Model Context Protocol → MCP Hosts**. 2. Click **Add Connection** and choose **Server-Sent Events**. 3. Enter a **Title**, the server **Endpoint** (for example `https://mcp.example.com/`), and an **Authen - Network accessline 45
2. Click **Add Connection** and choose **Server-Sent Events**. 3. Enter a **Title**, the server **Endpoint** (for example `https://mcp.example.com/`), and an **Authentication** method. 4. Save. - Network accessline 46
3. Enter a **Title**, the server **Endpoint** (for example `https://mcp.example.com/`), and an **Authentication** method. - Network accessline 85
"Properties": { "SseMcpConnectionMetadata": { "Endpoint": "https://mcp.example.com/", - Network accessline 86
"SseMcpConnectionMetadata": { "Endpoint": "https://mcp.example.com/", "AuthenticationType": "ApiKey", - Network accessline 87
"Endpoint": "https://mcp.example.com/",
plugins/crestapps-orchardcore/skills/orchardcore-ai-mcp-server/SKILL.md
- Network accessline 102
1. Enable `CrestApps.OrchardCore.AI.ToolInstances`. 2. Under **Artificial Intelligence → Tool Instances**, add one **Documentation search (sitemap)** instance per public site (for example `orchardcore-docs` with base URL `https://docs.orcha - Network accessline 103
2. Under **Artificial Intelligence → Tool Instances**, add one **Documentation search (sitemap)** instance per public site (for example `orchardcore-docs` with base URL `https://docs.orchardcore.net`). See `orchardcore-ai-tool-instances`. - Network accessline 125
"transport": { "type": "http", "url": "https://your-orchard-site.com/mcp", - Network accessline 126
"type": "http", "url": "https://your-orchard-site.com/mcp", "headers": { - Network accessline 127
"url": "https://your-orchard-site.com/mcp",
plugins/crestapps-orchardcore/skills/orchardcore-ai-mcp/SKILL.md
- Network accessline 12
The [Model Context Protocol](https://modelcontextprotocol.io/introduction) is an open standard for connecting LLM applications to tools and data. The `CrestApps.OrchardCore.AI.Mcp` package lets Orchard Core act as an MCP **client** (use too - Network accessline 79
"Properties": { "SseMcpConnectionMetadata": { "Endpoint": "https://mcp-tools.example.com/", - Network accessline 80
"SseMcpConnectionMetadata": { "Endpoint": "https://mcp-tools.example.com/", "AuthenticationType": "Anonymous" - Network accessline 81
"Endpoint": "https://mcp-tools.example.com/", - Network accessline 120
- [Docker Hub MCP images](https://hub.docker.com/search?q=mcp) - Network accessline 121
- [MCP.so](https://mcp.so/) - Network accessline 122
- [Glama.ai MCP servers](https://glama.ai/mcp/servers) - Network accessline 123
- [MCPServers.org](https://mcpservers.org/)
plugins/crestapps-orchardcore/skills/orchardcore-ai-mcp/references/ai-mcp-examples.md
- Network accessline 22
"Properties": { "SseMcpConnectionMetadata": { "Endpoint": "https://mcp-tools.example.com/", - Network accessline 23
"SseMcpConnectionMetadata": { "Endpoint": "https://mcp-tools.example.com/", "AuthenticationType": "OAuth2ClientCredentials", - Network accessline 24
"Endpoint": "https://mcp-tools.example.com/", - Network accessline 25
"AuthenticationType": "OAuth2ClientCredentials", "OAuth2TokenEndpoint": "https://auth.example.com/oauth2/token", "OAuth2ClientId": "orchard-site", - Network accessline 26
"OAuth2TokenEndpoint": "https://auth.example.com/oauth2/token", - Network accessline 84
"Properties": { "SseMcpConnectionMetadata": { "Endpoint": "https://db-tools.example.com/mcp", - Network accessline 85
"SseMcpConnectionMetadata": { "Endpoint": "https://db-tools.example.com/mcp", "AuthenticationType": "CustomHeaders", - Network accessline 86
"Endpoint": "https://db-tools.example.com/mcp", - Network accessline 160
"transport": { "type": "http", "url": "https://your-orchard-site.com/mcp", - Network accessline 161
"type": "http", "url": "https://your-orchard-site.com/mcp", "headers": { - Network accessline 162
"url": "https://your-orchard-site.com/mcp", - Network accessline 228
var client = _httpClientFactory.CreateClient(); var response = await client.GetStringAsync( new Uri(new Uri("https://api.example.com/"), SanitizePath(path)), - Network accessline 229
var response = await client.GetStringAsync( new Uri(new Uri("https://api.example.com/"), SanitizePath(path)), cancellationToken); - Network accessline 230
new Uri(new Uri("https://api.example.com/"), SanitizePath(path)),
plugins/crestapps-orchardcore/skills/orchardcore-ai-providers/SKILL.md
- Network accessline 46
[Credential-related source omitted] - Network accessline 47
[Credential-related source omitted] - Network accessline 48
[Credential-related source omitted] - Network accessline 86
A Gemini connection typically uses `https://generativelanguage.googleapis.com/v1` as `Endpoint`. - Network accessline 100
"Properties": { "AzureConnectionMetadata": { "Endpoint": "https://my-resource.openai.azure.com/", - Network accessline 101
"AzureConnectionMetadata": { "Endpoint": "https://my-resource.openai.azure.com/", "AuthenticationType": "ManagedIdentity" - Network accessline 102
"Endpoint": "https://my-resource.openai.azure.com/", - Network accessline 168
"Name": "speech-to-text", "ClientName": "AzureSpeech", "Endpoint": "https://eastus.api.cognitive.microsoft.com/", - Network accessline 169
"ClientName": "AzureSpeech", "Endpoint": "https://eastus.api.cognitive.microsoft.com/", "AuthenticationType": "ApiKey", - Network accessline 170
"Endpoint": "https://eastus.api.cognitive.microsoft.com/", - Network accessline 195
"Name": "github-models", "ClientName": "AzureAIInference", "Endpoint": "https://models.inference.ai.azure.com", - Network accessline 196
"ClientName": "AzureAIInference", "Endpoint": "https://models.inference.ai.azure.com", "AuthenticationType": "ApiKey", - Network accessline 197
"Endpoint": "https://models.inference.ai.azure.com", - Network accessline 223
"AI": { "Connections": [ { "Name": "local-ollama", "ClientName": "Ollama", "Endpoint": "http://localhost:11434" } - Network accessline 224
"Connections": [ { "Name": "local-ollama", "ClientName": "Ollama", "Endpoint": "http://localhost:11434" } ], - Network accessline 225
{ "Name": "local-ollama", "ClientName": "Ollama", "Endpoint": "http://localhost:11434" }
plugins/crestapps-orchardcore/skills/orchardcore-ai-tool-instances/SKILL.md
- Network accessline 115
"Properties": { "HttpApiRequestToolSettings": { "BaseUrl": "https://api.example.com/orders", - Network accessline 116
"HttpApiRequestToolSettings": { "BaseUrl": "https://api.example.com/orders", "PathTemplate": "{orderNumber}", - Network accessline 117
"BaseUrl": "https://api.example.com/orders", - Network accessline 143
"Properties": { "SitemapDocumentationToolSettings": { "BaseUrl": "https://docs.orchardcore.net" - Network accessline 144
"SitemapDocumentationToolSettings": { "BaseUrl": "https://docs.orchardcore.net" } - Network accessline 145
"BaseUrl": "https://docs.orchardcore.net" - Network accessline 153
"Properties": { "WebsiteSearchToolSettings": { "BaseUrl": "https://www.example.com" - Network accessline 154
"WebsiteSearchToolSettings": { "BaseUrl": "https://www.example.com" } - Network accessline 155
"BaseUrl": "https://www.example.com"
plugins/crestapps-orchardcore/skills/orchardcore-ai-web-crawlers/SKILL.md
- Network accessline 55
| **Include URL patterns** | `IncludeUrlPatterns` | Empty allows every page; otherwise a URL must match at least one | | **Exclude URL patterns** | `ExcludeUrlPatterns` | A URL matching any pattern is skipped; applied after include | | **Us - Network accessline 57
| **User-Agent** | `UserAgent` | `CrestApps-WebCrawler/1.0 (+https://crestapps.com)` | - Network accessline 59
Patterns are .NET regular expressions, one per line, matched against the full URL. Examples: `^https://example\.com/docs/` keeps only `/docs/`; `/tag/|/author/` drops taxonomy and author pages; `\.pdf$` drops PDF links. Invalid expressions - Network accessline 84
{ options.DefaultMaxConcurrentRequests = 2; options.DefaultUserAgent = "ContosoBot/1.0 (+https://contoso.com/bot)"; - Network accessline 85
options.DefaultMaxConcurrentRequests = 2; options.DefaultUserAgent = "ContosoBot/1.0 (+https://contoso.com/bot)"; }); - Network accessline 86
options.DefaultUserAgent = "ContosoBot/1.0 (+https://contoso.com/bot)";
plugins/crestapps-orchardcore/skills/orchardcore-contact-center/references/production-support.md
- Network accessline 38
"BaseVoiceVerification": { "AudioVerificationAcknowledged": true, "AudioVerificationEvidenceReference": "https://example.com/evidence/base-voice-2026-07" - Network accessline 39
"AudioVerificationAcknowledged": true, "AudioVerificationEvidenceReference": "https://example.com/evidence/base-voice-2026-07" } - Network accessline 40
"AudioVerificationEvidenceReference": "https://example.com/evidence/base-voice-2026-07"
plugins/crestapps-orchardcore/skills/orchardcore-crestapps-recipes/references/content-schemas.md
plugins/crestapps-orchardcore/skills/orchardcore-dnc-registry/SKILL.md
- Network accessline 59
| Registry | Key | Settings object | Properties | |---|---|---|---| | USA FTC | `usa-ftc-dnc` | `UsaFtcDncRegistrySettings` | `OrganizationId`, `BaseUrl` (default `https://telemarketing.donotcall.gov/api/`), `ProtectedApiKey` | - Network accessline 60
|---|---|---|---| | USA FTC | `usa-ftc-dnc` | `UsaFtcDncRegistrySettings` | `OrganizationId`, `BaseUrl` (default `https://telemarketing.donotcall.gov/api/`), `ProtectedApiKey` | | Canada LNNTE-DNCL | `canada-lnnte-dncl` | `CanadaDnclRegistr - Network accessline 61
| USA FTC | `usa-ftc-dnc` | `UsaFtcDncRegistrySettings` | `OrganizationId`, `BaseUrl` (default `https://telemarketing.donotcall.gov/api/`), `ProtectedApiKey` | - Network accessline 62
| Canada LNNTE-DNCL | `canada-lnnte-dncl` | `CanadaDnclRegistrySettings` | `AccountNumber`, `BaseUrl` (default `https://www.lnnte-dncl.gc.ca/api/`), `ProtectedApiKey` | - Network accessline 79
"UsaFtcDncRegistrySettings": { "OrganizationId": "example-org", "BaseUrl": "https://telemarketing.donotcall.gov/api/" - Network accessline 80
"OrganizationId": "example-org", "BaseUrl": "https://telemarketing.donotcall.gov/api/" } - Network accessline 81
"BaseUrl": "https://telemarketing.donotcall.gov/api/"
plugins/crestapps-orchardcore/skills/orchardcore-omnichannel-event-grid/SKILL.md
- Network accessline 60
"EventGrid": { "EventGridSasKey": "set-from-secrets", "AADIssuer": "https://sts.windows.net/<tenant-id>/", - Network accessline 61
"EventGridSasKey": "set-from-secrets", "AADIssuer": "https://sts.windows.net/<tenant-id>/", "AADAudience": "api://<application-id>", - Network accessline 62
"AADIssuer": "https://sts.windows.net/<tenant-id>/", - Network accessline 63
"AADAudience": "api://<application-id>", "AADMetadataAddress": "https://login.microsoftonline.com/<tenant-id>/.well-known/openid-configuration" } - Network accessline 64
"AADMetadataAddress": "https://login.microsoftonline.com/<tenant-id>/.well-known/openid-configuration"
plugins/crestapps-orchardcore/skills/orchardcore-payments/SKILL.md
plugins/crestapps-orchardcore/skills/orchardcore-point-of-sale/references/pos-api-examples.md
- Network accessline 3
A shift as a till app makes it. Paths are relative to `https://your-site/api/commerce/v1/`. Every call carries the staff member's bearer token; send an `Idempotency-Key` header on calls that take one. Responses omit some fields.
plugins/crestapps-orchardcore/skills/orchardcore-receipts/SKILL.md
- Network accessline 118
"ContactEmail": "billing@contoso.example", "ContactPhone": "+1 416 555 0100", "Website": "https://contoso.example", - Network accessline 119
"ContactPhone": "+1 416 555 0100", "Website": "https://contoso.example", "FooterText": "Thank you for your payment.", - Network accessline 120
"Website": "https://contoso.example",
plugins/crestapps-orchardcore/skills/orchardcore-shipping/SKILL.md
- Network accessline 77
"ShippingClasses": ["Bulky"], "Carriers": [ { "Name": "UPS", "TrackingUrlTemplate": "https://www.ups.com/track?tracknum={0}" } - Network accessline 78
"Carriers": [ { "Name": "UPS", "TrackingUrlTemplate": "https://www.ups.com/track?tracknum={0}" } ], - Network accessline 79
{ "Name": "UPS", "TrackingUrlTemplate": "https://www.ups.com/track?tracknum={0}" }
plugins/crestapps-orchardcore/skills/orchardcore-signalr/SKILL.md
- Network accessline 189
"SignalR": { "Azure": { "ConnectionString": "Endpoint=https://contoso.service.signalr.net;AccessKey=...;Version=1.0;" - Network accessline 190
"Azure": { "ConnectionString": "Endpoint=https://contoso.service.signalr.net;AccessKey=...;Version=1.0;" } - Network accessline 191
"ConnectionString": "Endpoint=https://contoso.service.signalr.net;AccessKey=...;Version=1.0;"
plugins/crestapps-orchardcore/skills/orchardcore-telephony-asterisk/SKILL.md
- Network accessline 61
|---|---|---| | Enable Asterisk provider | `IsEnabled` | Makes the provider selectable | | ARI base URL | `BaseUrl` | For example `http://localhost:8088/ari/`; `/ari` is appended when missing | - Network accessline 62
| Enable Asterisk provider | `IsEnabled` | Makes the provider selectable | | ARI base URL | `BaseUrl` | For example `http://localhost:8088/ari/`; `/ari` is appended when missing | | ARI user name and password | `UserName`, `Password` | Pass - Network accessline 63
| ARI base URL | `BaseUrl` | For example `http://localhost:8088/ari/`; `/ari` is appended when missing | - Network accessline 85
"Settings": { "IsEnabled": true, "BaseUrl": "https://pbx.example.com/ari/", - Network accessline 86
"IsEnabled": true, "BaseUrl": "https://pbx.example.com/ari/", "UserName": "orchard", - Network accessline 87
"BaseUrl": "https://pbx.example.com/ari/", - Network accessline 111
"Asterisk": { "Default": { "BaseUrl": "http://pbx.example.com:8088/ari/", - Network accessline 112
"Default": { "BaseUrl": "http://pbx.example.com:8088/ari/", "UserName": "<ari-user>", - Network accessline 113
"BaseUrl": "http://pbx.example.com:8088/ari/", - Network accessline 130
OrchardCore__CrestApps__Asterisk__Default__BaseUrl=http://pbx.example.com:8088/ari/
plugins/crestapps-orchardcore/skills/orchardcore-telephony-telnyx/SKILL.md
- Network accessline 77
| `WebRtcCodecs`, `WebRtcRegion` | SDK default, Automatic | Preferred codecs and signaling region | | `IceUrls`, `TurnUsername`, `TurnCredential`, `IceTransportPolicy` | SDK default, `all` | See STUN and TURN below | | `ApiBaseUrl` | `https - Network accessline 79
| `ApiBaseUrl` | `https://api.telnyx.com/v2/` | Override for testing |
plugins/crestapps-orchardcore/skills/orchardcore-websockets/SKILL.md
- Network accessline 65
"KeepAliveInterval": "00:00:30", "KeepAliveTimeout": "00:00:10", "AllowedOrigins": [ "https://app.example.com" ] - Network accessline 66
"KeepAliveTimeout": "00:00:10", "AllowedOrigins": [ "https://app.example.com" ] } - Network accessline 67
"AllowedOrigins": [ "https://app.example.com" ]
plugins/orchardcore/skills/orchardcore-amazon-s3-media/SKILL.md
- Network accessline 45
| `Region` | Region endpoint, e.g. `eu-central-1`. `Region` or `ServiceURL` is required. | | | `ServiceURL` | Custom endpoint (emulators, S3-compatible stores). Use instead of `Region`. | | | `ForcePathStyle` | Path-style addressing (`http: - Network accessline 46
| `ServiceURL` | Custom endpoint (emulators, S3-compatible stores). Use instead of `Region`. | | | `ForcePathStyle` | Path-style addressing (`http://host/bucket`), required by emulators. | `false` | | `Profile`, `ProfilesLocation` | AWS CLI - Network accessline 47
| `ForcePathStyle` | Path-style addressing (`http://host/bucket`), required by emulators. | `false` | - Access to secretsline 105
[Credential-related source omitted] - Network accessline 172
"Media": { "AmazonS3": { "ServiceURL": "http://localhost:9444/", - Network accessline 173
"AmazonS3": { "ServiceURL": "http://localhost:9444/", "Profile": "default", - Network accessline 174
"ServiceURL": "http://localhost:9444/",
plugins/orchardcore/skills/orchardcore-asset-manager/SKILL.md
- Network accessline 12
The Orchard Core Assets Manager compiles the frontend sources of modules and themes into their `wwwroot` folders. It is a Node.js CLI based on [Concurrently](https://github.com/open-cli-tools/concurrently) that reads `Assets.json` files and - Network accessline 394
- [Orchard Core Assets Manager guide](https://docs.orchardcore.net/en/latest/guides/assets-manager/) - Network accessline 395
- [Orchard Core 3.0.0 release notes](https://docs.orchardcore.net/en/latest/releases/3.0.0/#asset-manager) - Network accessline 396
- [Orchard Core 4.0.0 release notes](https://docs.orchardcore.net/en/latest/releases/4.0.0/)
plugins/orchardcore/skills/orchardcore-azure-ai-search/SKILL.md
- Network accessline 56
"Search": { "AzureAISearch": { "Endpoint": "https://[search-service-name].search.windows.net", - Network accessline 57
"AzureAISearch": { "Endpoint": "https://[search-service-name].search.windows.net", "IndexesPrefix": "", - Network accessline 58
"Endpoint": "https://[search-service-name].search.windows.net", - Access to secretsline 72
[Credential-related source omitted]
plugins/orchardcore/skills/orchardcore-azure-media/SKILL.md
- Network accessline 83
"Media": { "Azure": { "ConnectionString": "BlobEndpoint=https://myaccount.blob.core.windows.net/;SharedAccessSignature=sv=...", - Network accessline 84
"Azure": { "ConnectionString": "BlobEndpoint=https://myaccount.blob.core.windows.net/;SharedAccessSignature=sv=...", "ContainerName": "media", - Network accessline 85
"ConnectionString": "BlobEndpoint=https://myaccount.blob.core.windows.net/;SharedAccessSignature=sv=...",
plugins/orchardcore/skills/orchardcore-blazor/SKILL.md
- Network accessline 208
<main> <div class="top-row px-4"> <a href="https://docs.orchardcore.net/" target="_blank">Learn Orchard</a> - Network accessline 209
<div class="top-row px-4"> <a href="https://docs.orchardcore.net/" target="_blank">Learn Orchard</a> </div> - Network accessline 210
<a href="https://docs.orchardcore.net/" target="_blank">Learn Orchard</a>
plugins/orchardcore/skills/orchardcore-configuration/SKILL.md
plugins/orchardcore/skills/orchardcore-configuration/references/configuration-section-names.md
- Network accessline 87
}, "OrchardCore_Elasticsearch": { "Url": "http://localhost" - Network accessline 88
"OrchardCore_Elasticsearch": { "Url": "http://localhost" } - Network accessline 89
"Url": "http://localhost" - Network accessline 114
"Search": { "Elasticsearch": { "Url": "http://localhost" - Network accessline 115
"Elasticsearch": { "Url": "http://localhost" } - Network accessline 116
"Url": "http://localhost"
plugins/orchardcore/skills/orchardcore-content-fields/SKILL.md
- Network accessline 492
Required = true, LinkTextMode = LinkTextMode.Required, UrlPlaceholder = "https://example.com", - Network accessline 493
LinkTextMode = LinkTextMode.Required, UrlPlaceholder = "https://example.com", TextPlaceholder = "Click here", - Network accessline 494
UrlPlaceholder = "https://example.com", - Network accessline 603
Width = 640, Height = 360, Placeholder = "https://www.youtube.com/watch?v=...", - Network accessline 604
Height = 360, Placeholder = "https://www.youtube.com/watch?v=...", Hint = "Paste a YouTube video URL" - Network accessline 605
Placeholder = "https://www.youtube.com/watch?v=...",
plugins/orchardcore/skills/orchardcore-content-fields/references/content-fields-examples.md
- Network accessline 142
{ LinkTextMode = LinkTextMode.Optional, UrlPlaceholder = "https://example.com/product", - Network accessline 143
LinkTextMode = LinkTextMode.Optional, UrlPlaceholder = "https://example.com/product", TextPlaceholder = "View product page", - Network accessline 144
UrlPlaceholder = "https://example.com/product", - Network accessline 222
Width = 640, Height = 360, Placeholder = "https://www.youtube.com/watch?v=...", - Network accessline 223
Height = 360, Placeholder = "https://www.youtube.com/watch?v=...", Hint = "Optional video recording of the event" - Network accessline 224
Placeholder = "https://www.youtube.com/watch?v=...",
plugins/orchardcore/skills/orchardcore-contents-api/SKILL.md
- Network accessline 125
curl -X POST "https://cms.example.com/api/content?draft=true" \
plugins/orchardcore/skills/orchardcore-cors/SKILL.md
- Network accessline 52
|---|---| | Name | Use a stable descriptive name such as `PublicApi`. | | Allowed origins | Use complete origins such as `https://app.example.com`. | - Network accessline 53
| Name | Use a stable descriptive name such as `PublicApi`. | | Allowed origins | Use complete origins such as `https://app.example.com`. | | Allowed methods | Limit to the verbs required by the browser client. | - Network accessline 54
| Allowed origins | Use complete origins such as `https://app.example.com`. | - Network accessline 77
"Name": "Frontend", "AllowAnyOrigin": false, "AllowedOrigins": [ "https://app.example.com" ], - Network accessline 78
"AllowAnyOrigin": false, "AllowedOrigins": [ "https://app.example.com" ], "AllowAnyHeader": false, - Network accessline 79
"AllowedOrigins": [ "https://app.example.com" ], - Network accessline 109
{ Name = "PublicApi", AllowedOrigins = ["https://app.example.com"], - Network accessline 110
Name = "PublicApi", AllowedOrigins = ["https://app.example.com"], AllowedMethods = ["GET", "POST"], - Network accessline 111
AllowedOrigins = ["https://app.example.com"], - Network accessline 222
curl -i -X OPTIONS "https://cms.example.com/api/content/abc" \ - Network accessline 223
-H "Origin: https://app.example.com" \
plugins/orchardcore/skills/orchardcore-data-pipeline-steps/references/data-pipeline-steps-examples.md
- Network accessline 569
<label asp-for="Endpoint" class="ocat-label ocat-label-required">@T["Endpoint"]</label> <div class="ocat-end"> <input asp-for="Endpoint" type="url" class="form-control" placeholder="https://analytics.example.com" /> - Network accessline 570
<div class="ocat-end"> <input asp-for="Endpoint" type="url" class="form-control" placeholder="https://analytics.example.com" /> <span asp-validation-for="Endpoint"></span> - Network accessline 571
<input asp-for="Endpoint" type="url" class="form-control" placeholder="https://analytics.example.com" /> - Network accessline 670
"Y": 320, "Properties": { "SendToAnalyticsStepSettings": { "Endpoint": "https://analytics.example.com", "KeyField": "UserId" } - Network accessline 671
"Properties": { "SendToAnalyticsStepSettings": { "Endpoint": "https://analytics.example.com", "KeyField": "UserId" } } - Network accessline 672
"SendToAnalyticsStepSettings": { "Endpoint": "https://analytics.example.com", "KeyField": "UserId" }
plugins/orchardcore/skills/orchardcore-decoupled-cms/SKILL.md
plugins/orchardcore/skills/orchardcore-deployment-remote/SKILL.md
- Network accessline 74
|---|---| | `Name` | Admin-facing instance name. | | `Url` | Remote import endpoint, e.g. `https://example.com/OrchardCore.Deployment.Remote/ImportRemoteInstance/Import` (add the tenant URL prefix for a non-default tenant). | - Network accessline 75
| `Name` | Admin-facing instance name. | | `Url` | Remote import endpoint, e.g. `https://example.com/OrchardCore.Deployment.Remote/ImportRemoteInstance/Import` (add the tenant URL prefix for a non-default tenant). | | `ClientName` | Destina - Network accessline 76
| `Url` | Remote import endpoint, e.g. `https://example.com/OrchardCore.Deployment.Remote/ImportRemoteInstance/Import` (add the tenant URL prefix for a non-default tenant). |
plugins/orchardcore/skills/orchardcore-docker/SKILL.md
- Network accessline 52
EXPOSE 80 ENV ASPNETCORE_URLS=http://+:80 - Network accessline 53
ENV ASPNETCORE_URLS=http://+:80 - Network accessline 84
FROM mcr.microsoft.com/dotnet/aspnet:10.0 EXPOSE 80 ENV ASPNETCORE_URLS=http://+:80 - Network accessline 85
EXPOSE 80 ENV ASPNETCORE_URLS=http://+:80 WORKDIR /app - Network accessline 86
ENV ASPNETCORE_URLS=http://+:80 - Network accessline 313
EXPOSE 80 EXPOSE 443 ENV ASPNETCORE_URLS="https://+:443;http://+:80" - Network accessline 314
EXPOSE 443 ENV ASPNETCORE_URLS="https://+:443;http://+:80" ENV ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx - Network accessline 315
ENV ASPNETCORE_URLS="https://+:443;http://+:80" - Network accessline 352
FROM mcr.microsoft.com/dotnet/aspnet:10.0 ENV ASPNETCORE_URLS=http://+:8080 - Network accessline 353
ENV ASPNETCORE_URLS=http://+:8080 - Network accessline 375
EXPOSE 80 ENV ASPNETCORE_URLS=http://+:80 - Network accessline 376
ENV ASPNETCORE_URLS=http://+:80
plugins/orchardcore/skills/orchardcore-elasticsearch/SKILL.md
plugins/orchardcore/skills/orchardcore-email-azure/SKILL.md
- Network accessline 33
"Azure": { "DefaultSender": "DoNotReply@your-domain.azurecomm.net", "ConnectionString": "endpoint=https://your-resource.communication.azure.com/;accesskey=..." - Network accessline 34
"DefaultSender": "DoNotReply@your-domain.azurecomm.net", "ConnectionString": "endpoint=https://your-resource.communication.azure.com/;accesskey=..." } - Network accessline 35
"ConnectionString": "endpoint=https://your-resource.communication.azure.com/;accesskey=..."
plugins/orchardcore/skills/orchardcore-localization/SKILL.md
plugins/orchardcore/skills/orchardcore-markdown/SKILL.md
- Network accessline 282
| `yaml` | Parse YAML front matter. | | `nonascii-noescape` | Do not %-escape non-ASCII characters in URIs. | | `autolinks` | Auto-link URLs (`http://`, `ht - Network accessline 283
| `nonascii-noescape` | Do not %-escape non-ASCII characters in URIs. | | `autolinks` | Auto-link URLs (`http://`, `https://`, `ftp://`, `mailto:`, `www.`). | | `globalization` | Right-to-left content suppor - Network accessline 284
| `autolinks` | Auto-link URLs (`http://`, `https://`, `ftp://`, `mailto:`, `www.`). |
plugins/orchardcore/skills/orchardcore-media-gallery/SKILL.md
- Network accessline 98
authorization-code flow with PKCE required, sets local token validation (`Tenant: "Default"`), and registers the public `media_gallery` client. Before running it, replace `https://localhost:5001` with the tenant origin (keep the - Network accessline 99
(`Tenant: "Default"`), and registers the public `media_gallery` client. Before running it, replace `https://localhost:5001` with the tenant origin (keep the `/OrchardCore.Media/media-gallery-oidc-silent.html` path, including any tenant - Network accessline 100
running it, replace `https://localhost:5001` with the tenant origin (keep the - Network accessline 125
- Apply `MediaApiPkce` first, then **Media API — Standalone external app** (`MediaApiStandalone`). It enables `OrchardCore.Cors` with a default policy for the app origin (`AllowCredentials: false`), adds `callback.html` and `silent-callback - Network accessline 126
- `MediaApiStandaloneLocalhost` is the same for local development (app at `http://localhost:5173`, tenant at `https://localhost:5001`). Never use it in production. - Network accessline 130
{ "orchardBaseUrl": "https://cms.example.com/", - Network accessline 131
"orchardBaseUrl": "https://cms.example.com/", - Network accessline 132
"appBaseUrl": "https://media.example.com/", - Access to secretsline 208
[Credential-related source omitted]
plugins/orchardcore/skills/orchardcore-media-gallery/references/media-api-examples.md
- Network accessline 15
async function listFolder(path) { const response = await fetch(`${base}GetDirectoryContent?path=${encodeURIComponent(path)}`); - Network accessline 16
const response = await fetch(`${base}GetDirectoryContent?path=${encodeURIComponent(path)}`); - Network accessline 30
const response = await fetch(`${base}Upload?path=${encodeURIComponent(path)}`, { - Network accessline 40
async function moveFiles(names, sourceFolder, targetFolder) { await fetch(`${base}MoveMediaList`, { - Network accessline 41
await fetch(`${base}MoveMediaList`, { - Network accessline 48
async function deleteFiles(paths) { await fetch(`${base}DeleteMediaList`, { - Network accessline 49
await fetch(`${base}DeleteMediaList`, { - Network accessline 74
public MediaApiClient(HttpClient httpClient) { _httpClient = httpClient; // BaseAddress = https://cms.example.com/ (with tenant prefix) - Network accessline 75
{ _httpClient = httpClient; // BaseAddress = https://cms.example.com/ (with tenant prefix) } - Network accessline 76
_httpClient = httpClient; // BaseAddress = https://cms.example.com/ (with tenant prefix)
plugins/orchardcore/skills/orchardcore-media/SKILL.md
- Network accessline 53
"Media": { "MaxFileSize": 30000000, "CdnBaseUrl": "https://cdn.example.com", - Network accessline 54
"MaxFileSize": 30000000, "CdnBaseUrl": "https://cdn.example.com", "AssetsRequestPath": "/media", - Network accessline 55
"CdnBaseUrl": "https://cdn.example.com", - Network accessline 256
"Files": [ { "TargetPath": "images/logo.png", "SourcePath": "../wwwroot/images/logo.png" }, { "TargetPath": "images/banner.jpg", "SourceUrl": "https://example.com/banner.jpg" }, - Network accessline 257
{ "TargetPath": "images/logo.png", "SourcePath": "../wwwroot/images/logo.png" }, { "TargetPath": "images/banner.jpg", "SourceUrl": "https://example.com/banner.jpg" }, { "TargetPath": "docs/readme.txt", "Base64": "SGVsbG8=" } - Network accessline 258
{ "TargetPath": "images/banner.jpg", "SourceUrl": "https://example.com/banner.jpg" },
plugins/orchardcore/skills/orchardcore-module-creator/references/examples.md
plugins/orchardcore/skills/orchardcore-module-creator/references/module-structure.md
plugins/orchardcore/skills/orchardcore-modules/references/module-examples.md
plugins/orchardcore/skills/orchardcore-openapi/SKILL.md
- Network accessline 120
"AllowLogoutEndpoint": true, "RequireProofKeyForCodeExchange": true, "RedirectUris": "https://cms.example.com/OrchardCore.OpenApi/openapi-oidc-silent.html", - Network accessline 121
"RequireProofKeyForCodeExchange": true, "RedirectUris": "https://cms.example.com/OrchardCore.OpenApi/openapi-oidc-silent.html", "PostLogoutRedirectUris": "https://cms.example.com/", - Network accessline 122
"RedirectUris": "https://cms.example.com/OrchardCore.OpenApi/openapi-oidc-silent.html", - Network accessline 123
"PostLogoutRedirectUris": "https://cms.example.com/", - Network accessline 148
dotnet tool install -g NSwag.ConsoleCore # Against a running site with anonymous schema access enabled nswag openapi2csclient /input:https://localhost:5001/swagger/v1/swagger.json /output:OrchardClient.cs /namespace:MyApp.OrchardClient - Network accessline 150
nswag openapi2csclient /input:https://localhost:5001/swagger/v1/swagger.json /output:OrchardClient.cs /namespace:MyApp.OrchardClient
plugins/orchardcore/skills/orchardcore-openid/SKILL.md
- Network accessline 57
"name": "OpenIdServerSettings", "AccessTokenFormat": "JsonWebToken", "Authority": "https://auth.example.com", - Network accessline 58
"AccessTokenFormat": "JsonWebToken", "Authority": "https://auth.example.com", "EnableTokenEndpoint": true, - Network accessline 59
"Authority": "https://auth.example.com", - Network accessline 178
"AllowLogoutEndpoint": true, "RequireProofKeyForCodeExchange": true, "RedirectUris": "https://spa.example.com/callback https://spa.example.com/silent-renew", - Network accessline 179
"RequireProofKeyForCodeExchange": true, "RedirectUris": "https://spa.example.com/callback https://spa.example.com/silent-renew", "PostLogoutRedirectUris": "https://spa.example.com/logout-callback", - Network accessline 180
"RedirectUris": "https://spa.example.com/callback https://spa.example.com/silent-renew", - Network accessline 181
"PostLogoutRedirectUris": "https://spa.example.com/logout-callback", - Network accessline 252
OpenIddictConstants.Requirements.Features.ProofKeyForCodeExchange, }, RedirectUris = { new Uri("https://myapp.example.com/signin-oidc") }, - Network accessline 253
}, RedirectUris = { new Uri("https://myapp.example.com/signin-oidc") }, PostLogoutRedirectUris = { new Uri("https://myapp.example.com/signout-callback-oidc") }, - Network accessline 254
RedirectUris = { new Uri("https://myapp.example.com/signin-oidc") }, - Network accessline 255
PostLogoutRedirectUris = { new Uri("https://myapp.example.com/signout-callback-oidc") }, - Network accessline 343
{ "name": "OpenIdValidationSettings", "Authority": "https://idp.example.com", - Network accessline 344
"name": "OpenIdValidationSettings", "Authority": "https://idp.example.com", "Audience": "my-resource-server", - Network accessline 345
"Authority": "https://idp.example.com", - Network accessline 401
"name": "OpenIdClientSettings", "DisplayName": "Corporate IdP", "Authority": "https://login.microsoftonline.com/{tenant-id}/v2.0", - Network accessline 402
"DisplayName": "Corporate IdP", "Authority": "https://login.microsoftonline.com/{tenant-id}/v2.0", "ClientId": "azure-app-client-id", - Network accessline 403
"Authority": "https://login.microsoftonline.com/{tenant-id}/v2.0", - Network accessline 406
"CallbackPath": "/signin-oidc", "SignedOutCallbackPath": "/signout-callback-oidc", "SignedOutRedirectUri": "https://www.example.com/", - Network accessline 407
"SignedOutCallbackPath": "/signout-callback-oidc", "SignedOutRedirectUri": "https://www.example.com/", "ResponseType": "code", - Network accessline 408
"SignedOutRedirectUri": "https://www.example.com/",
plugins/orchardcore/skills/orchardcore-openid/references/openid-examples.md
- Network accessline 47
"AllowLogoutEndpoint": true, "RequireProofKeyForCodeExchange": true, "RedirectUris": "https://portal.example.com/signin-oidc", - Network accessline 48
"RequireProofKeyForCodeExchange": true, "RedirectUris": "https://portal.example.com/signin-oidc", "PostLogoutRedirectUris": "https://portal.example.com/signout-callback-oidc", - Network accessline 49
"RedirectUris": "https://portal.example.com/signin-oidc", - Network accessline 50
"PostLogoutRedirectUris": "https://portal.example.com/signout-callback-oidc", - Network accessline 137
OpenIddictConstants.Requirements.Features.ProofKeyForCodeExchange, }, RedirectUris = { new Uri("https://portal.example.com/signin-oidc") }, - Network accessline 138
}, RedirectUris = { new Uri("https://portal.example.com/signin-oidc") }, PostLogoutRedirectUris = { new Uri("https://portal.example.com/signout-callback-oidc") }, - Network accessline 139
RedirectUris = { new Uri("https://portal.example.com/signin-oidc") }, - Network accessline 140
PostLogoutRedirectUris = { new Uri("https://portal.example.com/signout-callback-oidc") }, - Network accessline 194
{ using var tokenResponse = await _httpClient.PostAsync( "https://cms.example.com/connect/token", - Network accessline 195
using var tokenResponse = await _httpClient.PostAsync( "https://cms.example.com/connect/token", new FormUrlEncodedContent(new Dictionary<string, string> - Network accessline 196
"https://cms.example.com/connect/token", - Access to secretsline 201
[Credential-related source omitted] - Network accessline 210
using var request = new HttpRequestMessage(HttpMethod.Get, $"https://cms.example.com/api/content/{contentItemId}"); - Access to secretsline 211
[Credential-related source omitted] - Network accessline 236
"AllowLogoutEndpoint": true, "RequireProofKeyForCodeExchange": true, "RedirectUris": "https://dashboard.example.com/callback https://dashboard.example.com/silent-renew", - Network accessline 237
"RequireProofKeyForCodeExchange": true, "RedirectUris": "https://dashboard.example.com/callback https://dashboard.example.com/silent-renew", "PostLogoutRedirectUris": "https://dashboard.example.com/logout", - Network accessline 238
"RedirectUris": "https://dashboard.example.com/callback https://dashboard.example.com/silent-renew", - Network accessline 239
"PostLogoutRedirectUris": "https://dashboard.example.com/logout", - Network accessline 251
Add a CORS policy for `https://dashboard.example.com` (see `orchardcore-cors`) when the SPA calls the API from another origin. - Network accessline 276
GET https://cms.example.com/connect/logout?id_token_hint={id_token}&post_logout_redirect_uri=https%3A%2F%2Fdashboard.example.com%2Flogout - Network accessline 305
{ "name": "OpenIdValidationSettings", "Authority": "https://auth.example.com", - Network accessline 306
"name": "OpenIdValidationSettings", "Authority": "https://auth.example.com", "Audience": "portal-resource-server" - Network accessline 307
"Authority": "https://auth.example.com",
plugins/orchardcore/skills/orchardcore-recaptcha/SKILL.md
- Network accessline 73
"SiteKey": "your-site-key", "SecretKey": "your-secret-key", "ReCaptchaScriptUri": "https://www.google.com/recaptcha/api.js", - Network accessline 74
"SecretKey": "your-secret-key", "ReCaptchaScriptUri": "https://www.google.com/recaptcha/api.js", "ReCaptchaApiUri": "https://www.google.com/recaptcha/api/siteverify" - Network accessline 75
"ReCaptchaScriptUri": "https://www.google.com/recaptcha/api.js", - Network accessline 76
"ReCaptchaApiUri": "https://www.google.com/recaptcha/api/siteverify"
plugins/orchardcore/skills/orchardcore-recipes/SKILL.md
- Network accessline 55
"description": "Creates the baseline configuration.", "author": "My Team", "website": "https://example.invalid", - Network accessline 56
"author": "My Team", "website": "https://example.invalid", "version": "1.0.0", - Network accessline 57
"website": "https://example.invalid", - Network accessline 135
"description": "Provisions a My Site tenant.", "author": "My Team", "website": "https://example.invalid", - Network accessline 136
"author": "My Team", "website": "https://example.invalid", "version": "1.0.0", - Network accessline 137
"website": "https://example.invalid", - Network accessline 328
The PKCE recipes contain a `https://localhost:5001` origin in `RedirectUris`/`PostLogoutRedirectUris` and `Default` as the validation `Tenant`; copy the recipe and replace both before running it on a real tenant. Run them with the `Recipes`
plugins/orchardcore/skills/orchardcore-recipes/references/recipe-schemas/AIToolInstances.schema.json
- Network accessline 191
"BaseUrl": { "type": "string", "description": "Root URL of the site to search (for example https://www.example.com)." - Network accessline 192
"type": "string", "description": "Root URL of the site to search (for example https://www.example.com)." }, - Network accessline 193
"description": "Root URL of the site to search (for example https://www.example.com)."
plugins/orchardcore/skills/orchardcore-recipes/references/recipe-schemas/Settings.schema.json
- Network accessline 2271
"string" ], "description": "Optional override of the Telnyx REST API base address. Empty uses https://api.telnyx.com/v2/." - Network accessline 2272
], "description": "Optional override of the Telnyx REST API base address. Empty uses https://api.telnyx.com/v2/." }, - Network accessline 2273
"description": "Optional override of the Telnyx REST API base address. Empty uses https://api.telnyx.com/v2/." - Network accessline 2432
"string" ], "description": "Optional override of the Telnyx REST API base address. Empty uses https://api.telnyx.com/v2/." - Network accessline 2433
], "description": "Optional override of the Telnyx REST API base address. Empty uses https://api.telnyx.com/v2/." } - Network accessline 2434
"description": "Optional override of the Telnyx REST API base address. Empty uses https://api.telnyx.com/v2/."
plugins/orchardcore/skills/orchardcore-recipes/references/recipe-schemas/TelnyxSettings.schema.json
- Network accessline 68
"string" ], "description": "Optional override of the Telnyx REST API base address. Empty uses https://api.telnyx.com/v2/." - Network accessline 69
], "description": "Optional override of the Telnyx REST API base address. Empty uses https://api.telnyx.com/v2/." }, - Network accessline 70
"description": "Optional override of the Telnyx REST API base address. Empty uses https://api.telnyx.com/v2/."
plugins/orchardcore/skills/orchardcore-recipes/references/recipe-schemas/TelnyxSmsSettings.schema.json
- Network accessline 41
"string" ], "description": "Optional override of the Telnyx REST API base address. Empty uses https://api.telnyx.com/v2/." - Network accessline 42
], "description": "Optional override of the Telnyx REST API base address. Empty uses https://api.telnyx.com/v2/." } - Network accessline 43
"description": "Optional override of the Telnyx REST API base address. Empty uses https://api.telnyx.com/v2/."
plugins/orchardcore/skills/orchardcore-recipes/references/recipe-schemas/WorkflowType.schema.json
- Network accessline 1476
}, "additionalProperties": false, "description": "The optional URL prefix for the tenant, for example \u0027site1\u0027 in \u0027http://orchardproject.net/site1\u0027. Supports Liquid - Network accessline 1477
"additionalProperties": false, "description": "The optional URL prefix for the tenant, for example \u0027site1\u0027 in \u0027http://orchardproject.net/site1\u0027. Supports Liquid syntax." - Network accessline 1478
"description": "The optional URL prefix for the tenant, for example \u0027site1\u0027 in \u0027http://orchardproject.net/site1\u0027. Supports Liquid syntax." - Network accessline 1490
}, "additionalProperties": false, "description": "The optional host name for the tenant, for example \u0027orchardproject.net\u0027 in \u0027http://orchardproject.net/\u0027. Supports - Network accessline 1491
"additionalProperties": false, "description": "The optional host name for the tenant, for example \u0027orchardproject.net\u0027 in \u0027http://orchardproject.net/\u0027. Supports Liquid syntax." - Network accessline 1492
"description": "The optional host name for the tenant, for example \u0027orchardproject.net\u0027 in \u0027http://orchardproject.net/\u0027. Supports Liquid syntax."
plugins/orchardcore/skills/orchardcore-resources/SKILL.md
- Network accessline 87
.SetUrl("~/MyModule/js/custom.min.js", "~/MyModule/js/custom.js") .SetCdn( "https://cdn.example.com/custom.min.js", - Network accessline 88
.SetCdn( "https://cdn.example.com/custom.min.js", "https://cdn.example.com/custom.js") - Network accessline 89
"https://cdn.example.com/custom.min.js", - Network accessline 90
"https://cdn.example.com/custom.js") - Network accessline 133
"ResourceDebugMode": "FromConfiguration", "UseCdn": false, "CdnBaseUrl": "https://cdn.example.com", - Network accessline 134
"UseCdn": false, "CdnBaseUrl": "https://cdn.example.com", "AppendVersion": true - Network accessline 135
"CdnBaseUrl": "https://cdn.example.com",
plugins/orchardcore/skills/orchardcore-sanitizer/SKILL.md
- Network accessline 24
- Configure the sanitizer using `ConfigureHtmlSanitizer` during service registration; multiple calls are combined. - Sanitizer configuration actions must be deterministic, because results are cached per tenant (see below). - The sanitizer i - Network accessline 25
- Sanitizer configuration actions must be deterministic, because results are cached per tenant (see below). - The sanitizer is based on the [HtmlSanitizer](https://github.com/mganss/HtmlSanitizer) library. - Always seal classes. - Network accessline 26
- The sanitizer is based on the [HtmlSanitizer](https://github.com/mganss/HtmlSanitizer) library.
plugins/orchardcore/skills/orchardcore-search-indexing/SKILL.md
plugins/orchardcore/skills/orchardcore-security/references/security-examples.md
- Network accessline 41
"Name": "Frontend", "AllowAnyOrigin": false, "AllowedOrigins": [ "https://app.example.com" ], - Network accessline 42
"AllowAnyOrigin": false, "AllowedOrigins": [ "https://app.example.com" ], "AllowAnyMethod": false, - Network accessline 43
"AllowedOrigins": [ "https://app.example.com" ], - Network accessline 74
"AllowLogoutEndpoint": true, "RequireProofKeyForCodeExchange": true, "RedirectUris": "https://myapp.example.com/callback", - Network accessline 75
"RequireProofKeyForCodeExchange": true, "RedirectUris": "https://myapp.example.com/callback", "PostLogoutRedirectUris": "https://myapp.example.com/signout-callback", - Network accessline 76
"RedirectUris": "https://myapp.example.com/callback", - Network accessline 77
"PostLogoutRedirectUris": "https://myapp.example.com/signout-callback", - Network accessline 139
{ "type": "https://tools.ietf.org/html/rfc9110#section-15.5.2", - Network accessline 140
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.2",
plugins/orchardcore/skills/orchardcore-seo/SKILL.md
- Network accessline 192
- Canonical: when empty, the absolute display URL of the item (from its route, e.g. `AutoroutePart`). - Open Graph and Twitter title/description fall back to `PageTitle` and `MetaDescription`. - Images fall back to `DefaultSocialImage`. Ima - Network accessline 193
- Open Graph and Twitter title/description fall back to `PageTitle` and `MetaDescription`. - Images fall back to `DefaultSocialImage`. Image URLs are mapped through the media store and made absolute; when media is served from a CDN (`MapPat - Network accessline 194
- Images fall back to `DefaultSocialImage`. Image URLs are mapped through the media store and made absolute; when media is served from a CDN (`MapPathToPublicUrl` already returns `https://...`), the CDN URL is used as-is (fixed in 4.0, it u - Network accessline 220
{ "@context": "https://schema.org", - Network accessline 221
"@context": "https://schema.org", - Network accessline 324
"MetaDescription": "{{Description}}", "MetaKeywords": "{{Keywords}}", "Canonical": "https://{{YourDomain}}/{{CanonicalPath}}", - Network accessline 325
"MetaKeywords": "{{Keywords}}", "Canonical": "https://{{YourDomain}}/{{CanonicalPath}}", "MetaRobots": "index, follow", - Network accessline 326
"Canonical": "https://{{YourDomain}}/{{CanonicalPath}}", - Network accessline 340
"TwitterCreator": "@{{TwitterHandle}}", "TwitterSite": "@{{SiteTwitterHandle}}", "GoogleSchema": "{\"@context\":\"https://schema.org\",\"@type\":\"WebPage\",\"name\":\"{{PageTitle}}\"}", - Network accessline 341
"TwitterSite": "@{{SiteTwitterHandle}}", "GoogleSchema": "{\"@context\":\"https://schema.org\",\"@type\":\"WebPage\",\"name\":\"{{PageTitle}}\"}", "CustomMetaTags": [ - Network accessline 342
"GoogleSchema": "{\"@context\":\"https://schema.org\",\"@type\":\"WebPage\",\"name\":\"{{PageTitle}}\"}",
plugins/orchardcore/skills/orchardcore-seo/references/seo-examples.md
- Network accessline 97
"TwitterCreator": "@audiostore", "TwitterSite": "@audiostore", "GoogleSchema": "{\"@context\":\"https://schema.org\",\"@type\":\"Product\",\"name\":\"Wireless Headphones Pro\",\"description\":\"Premium wireless headp - Network accessline 98
"TwitterSite": "@audiostore", "GoogleSchema": "{\"@context\":\"https://schema.org\",\"@type\":\"Product\",\"name\":\"Wireless Headphones Pro\",\"description\":\"Premium wireless headphones with active noise cancellation and 30-h - Network accessline 99
"GoogleSchema": "{\"@context\":\"https://schema.org\",\"@type\":\"Product\",\"name\":\"Wireless Headphones Pro\",\"description\":\"Premium wireless headphones with active noise cancellation and 30-hour battery life.\",\"image\":\"https://ex - Network accessline 220
}, "TwitterCard": "summary_large_image", "GoogleSchema": "{\"@context\":\"https://schema.org\",\"@type\":\"Organization\",\"name\":\"AudioStore\",\"url\":\"https://example.com\",\"logo\":\"https://example.com/media/s - Network accessline 221
"TwitterCard": "summary_large_image", "GoogleSchema": "{\"@context\":\"https://schema.org\",\"@type\":\"Organization\",\"name\":\"AudioStore\",\"url\":\"https://example.com\",\"logo\":\"https://example.com/media/site/logo.png\", - Network accessline 222
"GoogleSchema": "{\"@context\":\"https://schema.org\",\"@type\":\"Organization\",\"name\":\"AudioStore\",\"url\":\"https://example.com\",\"logo\":\"https://example.com/media/site/logo.png\",\"sameAs\":[\"https://twitter.com/audiostore\",\"h - Network accessline 260
"OpenGraphDescription": "Learn how to configure SEO features in Orchard Core.", "TwitterCard": "summary_large_image", "GoogleSchema": "[{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"Comple - Network accessline 261
"TwitterCard": "summary_large_image", "GoogleSchema": "[{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"Complete Guide to SEO in Orchard Core\",\"author\":{\"@type\":\"Person\",\"name\":\"Jane Smith\"}, - Network accessline 262
"GoogleSchema": "[{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"Complete Guide to SEO in Orchard Core\",\"author\":{\"@type\":\"Person\",\"name\":\"Jane Smith\"},\"datePublished\":\"2025-01-15\",\"dateModified\":
plugins/orchardcore/skills/orchardcore-setup/SKILL.md
- Network accessline 220
# Navigate to https://localhost:5001
plugins/orchardcore/skills/orchardcore-setup/references/setup-examples.md
- Network accessline 16
Navigate to `https://localhost:5001` and complete setup: - Network accessline 52
"description": "Sets up a basic e-commerce site with products and categories", "author": "CrestApps", "website": "https://crestapps.com", - Network accessline 53
"author": "CrestApps", "website": "https://crestapps.com", "version": "1.0.0", - Network accessline 54
"website": "https://crestapps.com",
plugins/orchardcore/skills/orchardcore-shape-discovery/references/runtime-discovery.md
- Network accessline 146
- [Orchard Core Shapes](https://docs.orchardcore.net/en/latest/topics/display/shapes/) - Network accessline 147
- [Orchard Core Placement](https://docs.orchardcore.net/en/latest/reference/modules/Placement/) - Network accessline 148
- [Orchard Core Placements module](https://docs.orchardcore.net/en/latest/reference/modules/Placements/) - Network accessline 149
- [Orchard Core Templates](https://docs.orchardcore.net/en/latest/reference/modules/Templates/) - Network accessline 150
- [Orchard Core Liquid](https://docs.orchardcore.net/en/latest/reference/modules/Liquid/)
plugins/orchardcore/skills/orchardcore-site-settings/SKILL.md
- Network accessline 540
"name": "Settings", "SiteName": "My Orchard Core Site", "BaseUrl": "https://www.example.com", - Network accessline 541
"SiteName": "My Orchard Core Site", "BaseUrl": "https://www.example.com", "TimeZoneId": "America/New_York", - Network accessline 542
"BaseUrl": "https://www.example.com", - Network accessline 547
"UseCdn": false, "SocialMediaSettings": { "FacebookUrl": "https://facebook.com/contoso", - Network accessline 548
"SocialMediaSettings": { "FacebookUrl": "https://facebook.com/contoso", "ShowSocialLinks": true - Network accessline 549
"FacebookUrl": "https://facebook.com/contoso",
plugins/orchardcore/skills/orchardcore-site-settings/references/site-settings-examples.md
- Network accessline 191
<label asp-for="FacebookUrl" class="ocat-label">@T["Facebook URL"]</label> <div class="ocat-end"> <input asp-for="FacebookUrl" class="form-control" placeholder="https://facebook.com/yourpage" /> - Network accessline 192
<div class="ocat-end"> <input asp-for="FacebookUrl" class="form-control" placeholder="https://facebook.com/yourpage" /> <span asp-validation-for="FacebookUrl"></span> - Network accessline 193
<input asp-for="FacebookUrl" class="form-control" placeholder="https://facebook.com/yourpage" /> - Network accessline 408
"name": "Settings", "SiteName": "Contoso Corporate Portal", "BaseUrl": "https://www.contoso.com", - Network accessline 409
"SiteName": "Contoso Corporate Portal", "BaseUrl": "https://www.contoso.com", "TimeZoneId": "Europe/London", - Network accessline 410
"BaseUrl": "https://www.contoso.com", - Network accessline 416
"UseCdn": false, "SocialMediaSettings": { "FacebookUrl": "https://facebook.com/contoso", - Network accessline 417
"SocialMediaSettings": { "FacebookUrl": "https://facebook.com/contoso", "XHandle": "contoso", - Network accessline 418
"FacebookUrl": "https://facebook.com/contoso", - Network accessline 419
"XHandle": "contoso", "LinkedInUrl": "https://linkedin.com/company/contoso", "ShowSocialLinks": true - Network accessline 420
"LinkedInUrl": "https://linkedin.com/company/contoso", - Network accessline 443
{% assign social = Site.Properties.SocialMediaSettings %} {% if social.ShowSocialLinks %} <a href="https://x.com/{{ social.XHandle }}">X</a> - Network accessline 444
{% if social.ShowSocialLinks %} <a href="https://x.com/{{ social.XHandle }}">X</a> {% endif %} - Network accessline 445
<a href="https://x.com/{{ social.XHandle }}">X</a>
plugins/orchardcore/skills/orchardcore-sms-azure/SKILL.md
- Network accessline 78
"Azure": { "PhoneNumber": "+18005551234", "ConnectionString": "endpoint=https://your-resource.communication.azure.com/;accesskey=your-key" - Network accessline 79
"PhoneNumber": "+18005551234", "ConnectionString": "endpoint=https://your-resource.communication.azure.com/;accesskey=your-key" } - Network accessline 80
"ConnectionString": "endpoint=https://your-resource.communication.azure.com/;accesskey=your-key"
plugins/orchardcore/skills/orchardcore-sms/SKILL.md
plugins/orchardcore/skills/orchardcore-temp-file-storage/SKILL.md
plugins/orchardcore/skills/orchardcore-tenants/SKILL.md
plugins/orchardcore/skills/orchardcore-tenants/references/tenants-examples.md
- Network accessline 13
# Set up the Default tenant with the SaaS recipe # Navigate to https://localhost:5001 and complete setup: - Network accessline 14
# Navigate to https://localhost:5001 and complete setup: - Network accessline 30
- **Site Name**: Company Blog - **Admin**: admin / Password123! 6. Access the blog at `https://localhost:5001/blog`. - Network accessline 32
6. Access the blog at `https://localhost:5001/blog`. - Network accessline 39
for tenant in Marketing Engineering Sales; do prefix=$(echo "$tenant" | tr '[:upper:]' '[:lower:]') curl -X POST https://localhost:5001/api/tenants/create \ - Network accessline 40
prefix=$(echo "$tenant" | tr '[:upper:]' '[:lower:]') curl -X POST https://localhost:5001/api/tenants/create \ -H "Content-Type: application/json" \ - Network accessline 41
curl -X POST https://localhost:5001/api/tenants/create \
plugins/orchardcore/skills/orchardcore-tester/SKILL.md
- Dangerous shell operationline 38
rm -rf "$WEB_PROJECT/App_Data" - Network accessline 43
OrchardCore__AutoSetup__AutoSetupPath= OrchardCore__AutoSetup__Tenants__0__ShellName=Default OrchardCore__AutoSetup__Tenants__0__SiteName=TestSite OrchardCore__AutoSetup__Tenants__0__SiteTimeZone=America/Los_Angeles OrchardCore__AutoSet - Network accessline 50
OrchardCore__AutoSetup__Tenants__0__DatabaseProvider=Sqlite \ OrchardCore__AutoSetup__Tenants__0__RecipeName=Blog \ dotnet run --project "$WEB_PROJECT" --no-build --urls "http://localhost:$PORT" > autosetup-console.log 2>&1 & - Network accessline 52
dotnet run --project "$WEB_PROJECT" --no-build --urls "http://localhost:$PORT" > autosetup-console.log 2>&1 & - Network accessline 54
# 4. Trigger and confirm. curl -s -o /dev/null "http://localhost:$PORT/" - Network accessline 55
curl -s -o /dev/null "http://localhost:$PORT/" - Network accessline 89
# Start the site in a background process $proc = Start-Process dotnet ` -ArgumentList "run","--no-build","--urls","http://localhost:$port" ` - Network accessline 90
$proc = Start-Process dotnet -ArgumentList "run","--no-build","--urls","http://localhost:$port" - Network accessline 91
-ArgumentList "run","--no-build","--urls","http://localhost:$port" ` - Network accessline 95
# Save PID for later cleanup $proc.Id | Out-File ".orchardcore-pid" -NoNewline Write-Host "Started Orchard Core (PID: $($proc.Id)) on http://localhost:$port" - Network accessline 97
Write-Host "Started Orchard Core (PID: $($proc.Id)) on http://localhost:$port" - Network accessline 106
while ($elapsed -lt $timeout) { try { $response = Invoke-WebRequest -Uri "http://localhost:$port" -UseBasicParsing -TimeoutSec 2 - Network accessline 107
try { $response = Invoke-WebRequest -Uri "http://localhost:$port" -UseBasicParsing -TimeoutSec 2 Write-Host "Application ready at http://localhost:$port" - Network accessline 108
$response = Invoke-WebRequest -Uri "http://localhost:$port" -UseBasicParsing -TimeoutSec 2 - Network accessline 109
Write-Host "Application ready at http://localhost:$port" - Dangerous shell operationline 135
rm -f .orchardcore-pid - Network accessline 169
PORT=$(cat .orchardcore-port) playwright-cli --browser webkit open "http://localhost:$PORT/" - Network accessline 170
playwright-cli --browser webkit open "http://localhost:$PORT/" - Network accessline 185
PORT=$(cat .orchardcore-port) playwright-cli open "http://localhost:$PORT/Login" - Network accessline 186
playwright-cli open "http://localhost:$PORT/Login" - Dangerous shell operationline 190
playwright-cli eval '((p)=>{var s=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value").set; s.call(p,"Password1!"); p.dispatchEvent(new Event("input",{bubbles:true})); p.dispatchEvent(new Event("change",{bubbles:true}) - Network accessline 192
playwright-cli click <login-button-ref> playwright-cli open "http://localhost:$PORT/Admin" - Network accessline 193
playwright-cli open "http://localhost:$PORT/Admin" - Dangerous shell operationline 194
playwright-cli eval 'window.location.pathname' # "/Admin" when signed in - Network accessline 203
playwright-cli open http://localhost:$port/Admin/Media - Network accessline 209
playwright-cli open http://localhost:$port/Admin/Contents/ContentItems - Network accessline 216
playwright-cli open http://localhost:$port/Admin/Features - Dangerous shell operationline 234
playwright-cli eval "document.title" - Dangerous shell operationline 235
playwright-cli eval "document.querySelector('h1.oc-breadcrumb-title')?.textContent.trim()"
plugins/orchardcore/skills/orchardcore-tester/references/admin-navigation.md
- Dangerous shell operationline 76
playwright-cli eval "document.querySelector('h1.oc-breadcrumb-title')?.textContent.trim()" - Dangerous shell operationline 77
playwright-cli eval "[...document.querySelectorAll('ol.breadcrumb li')].map(li => li.textContent.trim())" - Network accessline 146
# Navigate to login playwright-cli open http://localhost:$port/Login - Network accessline 147
playwright-cli open http://localhost:$port/Login - Network accessline 156
# Navigate to admin playwright-cli open http://localhost:$port/Admin - Network accessline 157
playwright-cli open http://localhost:$port/Admin
plugins/orchardcore/skills/orchardcore-tester/references/autosetup.md
- Network accessline 36
OrchardCore__AutoSetup__AutoSetupPath= OrchardCore__AutoSetup__Tenants__0__ShellName=Default OrchardCore__AutoSetup__Tenants__0__SiteName=TestSite OrchardCore__AutoSetup__Tenants__0__SiteTimeZone=America/Los_Angeles OrchardCore__AutoSet - Network accessline 43
OrchardCore__AutoSetup__Tenants__0__DatabaseProvider=Sqlite \ OrchardCore__AutoSetup__Tenants__0__RecipeName=Blog \ dotnet run --project "$WEB_PROJECT" --no-build --urls "http://localhost:$PORT" > autosetup-console.log 2>&1 & - Network accessline 45
dotnet run --project "$WEB_PROJECT" --no-build --urls "http://localhost:$PORT" > autosetup-console.log 2>&1 & - Network accessline 47
curl -s -o /dev/null "http://localhost:$PORT/" - Network accessline 64
$env:OrchardCore__AutoSetup__Tenants__0__DatabaseProvider = "Sqlite" $env:OrchardCore__AutoSetup__Tenants__0__RecipeName = "Blog" dotnet run --project $webProject --no-build --urls "http://localhost:$port" - Network accessline 66
dotnet run --project $webProject --no-build --urls "http://localhost:$port"
plugins/orchardcore/skills/orchardcore-tester/references/common-features.md
- Network accessline 10
# Navigate to Media playwright-cli open http://localhost:5000/Admin/Media - Network accessline 11
playwright-cli open http://localhost:5000/Admin/Media - Network accessline 38
# Navigate to content items playwright-cli open http://localhost:5000/Admin/Contents/ContentItems - Network accessline 39
playwright-cli open http://localhost:5000/Admin/Contents/ContentItems - Network accessline 77
# Navigate to Features playwright-cli open http://localhost:5000/Admin/Features - Network accessline 78
playwright-cli open http://localhost:5000/Admin/Features - Network accessline 107
# Navigate to Users playwright-cli open http://localhost:5000/Admin/Users/Index - Network accessline 108
playwright-cli open http://localhost:5000/Admin/Users/Index - Network accessline 135
# Navigate to Content Types playwright-cli open http://localhost:5000/Admin/ContentTypes/List - Network accessline 136
playwright-cli open http://localhost:5000/Admin/ContentTypes/List - Network accessline 173
# Navigate to Themes playwright-cli open http://localhost:5000/Admin/Themes - Network accessline 174
playwright-cli open http://localhost:5000/Admin/Themes - Dangerous shell operationline 207
playwright-cli eval "document.title"
plugins/orchardcore/skills/orchardcore-tester/references/debugging.md
- Network accessline 67
Start-Process dotnet -ArgumentList "run --urls http://localhost:$port" `
plugins/orchardcore/skills/orchardcore-tester/references/playwright-cli.md
- Network accessline 16
playwright-cli --browser webkit open "http://localhost:$PORT/Login" - Dangerous shell operationline 25
`playwright-cli eval '<expr>'` runs your text as `() => (<expr>)`. - Dangerous shell operationline 32
playwright-cli eval 'document.getElementById("Password").value' - Dangerous shell operationline 42
playwright-cli eval '((p)=>{var s=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value").set; s.call(p,"Password1!"); p.dispatchEvent(new Event("input",{bubbles:true})); p.dispatchEvent(new Event("change",{bubbles:true})
plugins/orchardcore/skills/orchardcore-tester/references/setup-wizard.md
- Network accessline 49
# 1. Open the wizard and capture refs. playwright-cli --browser webkit open "http://localhost:$PORT/" - Network accessline 50
playwright-cli --browser webkit open "http://localhost:$PORT/" - Dangerous shell operationline 62
playwright-cli eval 'document.getElementById("RecipeName").value' # "Blog" - Dangerous shell operationline 67
playwright-cli eval '((p)=>{var s=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value").set; s.call(p,"Password1!"); p.dispatchEvent(new Event("input",{bubbles:true})); p.dispatchEvent(new Event("change",{bubbles:true}) - Dangerous shell operationline 68
playwright-cli eval '((p)=>{var s=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value").set; s.call(p,"Password1!"); p.dispatchEvent(new Event("input",{bubbles:true})); p.dispatchEvent(new Event("change",{bubbles:true}) - Dangerous shell operationline 69
playwright-cli eval 'document.getElementById("Password").value+"|"+document.getElementById("PasswordConfirmation").value' - Dangerous shell operationline 73
playwright-cli eval 'window.location.pathname+" | "+document.title'
plugins/orchardcore/skills/orchardcore-theme-creator/SKILL.md
plugins/orchardcore/skills/orchardcore-theme-creator/references/theme-structure.md
- Network accessline 40
Name = "Contoso Theme", Author = "Contoso", Website = "https://contoso.com", - Network accessline 41
Author = "Contoso", Website = "https://contoso.com", Version = "1.0.0", - Network accessline 42
Website = "https://contoso.com", - Network accessline 55
Name = "Contoso Admin", Author = "Contoso", Website = "https://contoso.com", - Network accessline 56
Author = "Contoso", Website = "https://contoso.com", Version = "1.0.0", - Network accessline 57
Website = "https://contoso.com",
plugins/orchardcore/skills/orchardcore-theming/references/theming-examples.md
plugins/orchardcore/skills/orchardcore-users-roles/SKILL.md
plugins/orchardcore/skills/orchardcore-xml-rpc/SKILL.md
- Network accessline 156
1. Enable the `Remote Publishing` feature. 2. In the client, add a new account and choose the MetaWeblog API. 3. Point the endpoint at `https://your-site/xmlrpc/metaweblog`. - Network accessline 157
2. In the client, add a new account and choose the MetaWeblog API. 3. Point the endpoint at `https://your-site/xmlrpc/metaweblog`. 4. Sign in as a user who can create and publish the relevant content type. - Network accessline 158
3. Point the endpoint at `https://your-site/xmlrpc/metaweblog`.
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-a2a/SKILL.md
- Network accessline 38
{ DisplayText = "Legal Review Agent", Endpoint = "https://agents.example.com/", - Network accessline 39
DisplayText = "Legal Review Agent", Endpoint = "https://agents.example.com/", }; - Network accessline 40
Endpoint = "https://agents.example.com/", - Network accessline 147
"version": "1.0", "supportedInterfaces": [ { "url": "https://agents.example.com/a2a?agent=legal-review", "protocolBinding": "JSONRPC", "protocolVersion": "1.0" } - Network accessline 148
"supportedInterfaces": [ { "url": "https://agents.example.com/a2a?agent=legal-review", "protocolBinding": "JSONRPC", "protocolVersion": "1.0" } ], - Network accessline 149
{ "url": "https://agents.example.com/a2a?agent=legal-review", "protocolBinding": "JSONRPC", "protocolVersion": "1.0" }
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-azure-ai-inference/SKILL.md
- Network accessline 53
"Name": "github-models", "ClientName": "AzureAIInference", "Endpoint": "https://models.inference.ai.azure.com", - Network accessline 54
"ClientName": "AzureAIInference", "Endpoint": "https://models.inference.ai.azure.com", "AuthenticationType": "ApiKey", - Network accessline 55
"Endpoint": "https://models.inference.ai.azure.com", - Network accessline 60
"Name": "foundry", "ClientName": "AzureAIInference", "Endpoint": "https://your-project.inference.ai.azure.com", - Network accessline 61
"ClientName": "AzureAIInference", "Endpoint": "https://your-project.inference.ai.azure.com", "AuthenticationType": "ManagedIdentity" - Network accessline 62
"Endpoint": "https://your-project.inference.ai.azure.com",
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-azure-ai-search/SKILL.md
- Network accessline 43
"CrestApps": { "AzureAISearch": { "Endpoint": "https://my-search.search.windows.net", - Network accessline 44
"AzureAISearch": { "Endpoint": "https://my-search.search.windows.net", "AuthenticationType": "Default", - Network accessline 45
"Endpoint": "https://my-search.search.windows.net",
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-azure-openai/SKILL.md
- Network accessline 53
"Name": "azure-production", "ClientName": "Azure", "Endpoint": "https://my-resource.openai.azure.com/", - Network accessline 54
"ClientName": "Azure", "Endpoint": "https://my-resource.openai.azure.com/", "AuthenticationType": "ApiKey", - Network accessline 55
"Endpoint": "https://my-resource.openai.azure.com/", - Network accessline 60
"Name": "azure-managed", "ClientName": "Azure", "Endpoint": "https://my-resource.openai.azure.com/", - Network accessline 61
"ClientName": "Azure", "Endpoint": "https://my-resource.openai.azure.com/", "AuthenticationType": "ManagedIdentity", - Network accessline 62
"Endpoint": "https://my-resource.openai.azure.com/", - Network accessline 147
"ClientName": "AzureSpeech", "Name": "azure-tts", "Endpoint": "https://eastus.tts.speech.microsoft.com", - Network accessline 148
"Name": "azure-tts", "Endpoint": "https://eastus.tts.speech.microsoft.com", "AuthenticationType": "ApiKey", - Network accessline 149
"Endpoint": "https://eastus.tts.speech.microsoft.com", - Network accessline 155
"ClientName": "AzureSpeech", "Name": "azure-stt", "Endpoint": "https://eastus.stt.speech.microsoft.com", - Network accessline 156
"Name": "azure-stt", "Endpoint": "https://eastus.stt.speech.microsoft.com", "AuthenticationType": "ApiKey", - Network accessline 157
"Endpoint": "https://eastus.stt.speech.microsoft.com",
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-chat-interactions/SKILL.md
- Network accessline 148
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@crestapps/ai-chat-ui/dist/chat-widget.min.css" /> - Network accessline 149
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@crestapps/ai-chat-ui/dist/chat-image-carousel.min.css" /> - Network accessline 151
<script src="https://cdn.jsdelivr.net/npm/@microsoft/signalr@10.0.11/dist/browser/signalr.min.js" - Network accessline 152
integrity="sha384-N+pL/4qXZHZcvsa6hVMd5/7cdF3lC59ZMNHeQyRo5q9jmC7yw0hcJILPjUDSU7ZS" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script> - Network accessline 153
crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/vue@3/dist/vue.global.prod.js"></script> - Network accessline 154
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script> - Network accessline 155
<script src="https://cdn.jsdelivr.net/npm/vue@3/dist/vue.global.prod.js"></script> - Network accessline 156
<script src="https://cdn.jsdelivr.net/npm/dompurify@3/dist/purify.min.js"></script> - Network accessline 157
<script src="https://cdn.jsdelivr.net/npm/@crestapps/ai-chat-ui/dist/chat-markers.min.js"></script> - Network accessline 158
<script src="https://cdn.jsdelivr.net/npm/@crestapps/ai-chat-ui/dist/chat-image-carousel.min.js"></script> - Network accessline 159
<script src="https://cdn.jsdelivr.net/npm/@crestapps/ai-chat-ui/dist/ai-chat.min.js"></script>
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-claude-orchestrator/SKILL.md
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-copilot-orchestrator/SKILL.md
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-document-agents/SKILL.md
- Network accessline 41
options.CertificatePath = builder.Configuration["Pdf:CertificatePath"]; options.CertificatePassword = builder.Configuration["Pdf:CertificatePassword"]; options.TimestampAuthorityUrl = "https://timestamp.examp - Network accessline 42
options.CertificatePassword = builder.Configuration["Pdf:CertificatePassword"]; options.TimestampAuthorityUrl = "https://timestamp.example.com"; }) - Network accessline 43
options.TimestampAuthorityUrl = "https://timestamp.example.com";
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-elasticsearch/SKILL.md
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-ollama/SKILL.md
- Network accessline 53
"Name": "local-ollama", "ClientName": "Ollama", "Endpoint": "http://localhost:11434" - Network accessline 54
"ClientName": "Ollama", "Endpoint": "http://localhost:11434" } - Network accessline 55
"Endpoint": "http://localhost:11434" - Network accessline 135
docker exec -it ollama ollama pull llama3.1 docker exec -it ollama ollama pull nomic-embed-text curl http://localhost:11434/api/tags - Network accessline 137
curl http://localhost:11434/api/tags - Network accessline 144
- **`Endpoint` errors when the first chat runs**: the connection has no `Endpoint`. Add `http://localhost:11434` or the server URL.
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-openai/SKILL.md
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-overview/SKILL.md
- Access to secretsline 67
[Credential-related source omitted]
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-realtime-voice/references/realtime-voice-examples.md
- Network accessline 228
<script src="https://cdn.jsdelivr.net/npm/@crestapps/ai-chat-ui/dist/realtime-audio.min.js"></script>
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-response-handlers/SKILL.md
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-sample-hosts/SKILL.md
- Network accessline 35
- The MVC host listens on `https://localhost:5100` and the Blazor host on `https://localhost:5200` from their launch profiles. Under Aspire they use `https://localhost:7150` and `https://localhost:5201`, which the MCP and A2A clients target
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-signalr/SKILL.md
src/CrestApps.AgentSkills/crestapps-core/crestapps-core-web-crawlers/SKILL.md
- Network accessline 61
crawler.Put(new SitemapWebCrawlerMetadata { BaseUrl = "https://docs.example.com", - Network accessline 62
{ BaseUrl = "https://docs.example.com", SitemapUrl = null, // optional; resolved from robots.txt and conventional paths - Network accessline 63
BaseUrl = "https://docs.example.com", - Network accessline 66
MaxConcurrentRequests = 4, RequestTimeoutSeconds = 30, IncludeUrlPatterns = ["^https://docs\\.example\\.com/guides/"], - Network accessline 67
RequestTimeoutSeconds = 30, IncludeUrlPatterns = ["^https://docs\\.example\\.com/guides/"], ExcludeUrlPatterns = ["/changelog/"], - Network accessline 68
IncludeUrlPatterns = ["^https://docs\\.example\\.com/guides/"],
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-a2a-client/SKILL.md
- Network accessline 42
1. Open **Artificial Intelligence → Agent to Agent Hosts** and click **Add Connection**. 2. Enter a **Title**, the host **Endpoint** (for example `https://agents.example.com`), and an **Authentication** method. - Network accessline 43
2. Enter a **Title**, the host **Endpoint** (for example `https://agents.example.com`), and an **Authentication** method. - Network accessline 70
{ "DisplayText": "Production agent hub", "Endpoint": "https://agents.example.com", - Network accessline 71
"DisplayText": "Production agent hub", "Endpoint": "https://agents.example.com", "Properties": { - Network accessline 72
"Endpoint": "https://agents.example.com",
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-a2a-host/SKILL.md
- Network accessline 96
"description": "Researches topics and returns sourced summaries.", "supportedInterfaces": [ { "url": "https://example.com/a2a?agent=research-agent", "protocolBinding": "JSONRPC" } - Network accessline 97
"supportedInterfaces": [ { "url": "https://example.com/a2a?agent=research-agent", "protocolBinding": "JSONRPC" } ], - Network accessline 98
{ "url": "https://example.com/a2a?agent=research-agent", "protocolBinding": "JSONRPC" }
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-chat-claude/SKILL.md
- Network accessline 74
"AI": { "Claude": { "BaseUrl": "https://api.anthropic.com", - Network accessline 75
"Claude": { "BaseUrl": "https://api.anthropic.com", "DefaultModel": "claude-sonnet-4-5" - Network accessline 76
"BaseUrl": "https://api.anthropic.com", - Network accessline 84
The configuration key is `CrestApps:AI:Claude` (`ApiKey`, `BaseUrl` default `https://api.anthropic.com`, `DefaultModel`). This module binds `ClaudeOptions` from that section before it reads tenant site settings. The example above is a tenan
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-chat-copilot/SKILL.md
- Network accessline 74
"AuthenticationType": "ApiKey", "ProviderType": "openai", "BaseUrl": "https://api.openai.com/v1", - Network accessline 75
"ProviderType": "openai", "BaseUrl": "https://api.openai.com/v1", "DefaultModel": "gpt-4o", - Network accessline 76
"BaseUrl": "https://api.openai.com/v1", - Network accessline 93
1. Create a GitHub OAuth App. 2. Set its callback URL to `https://your-domain.example/copilot/OAuthCallback`. - Network accessline 94
2. Set its callback URL to `https://your-domain.example/copilot/OAuthCallback`.
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-chat-interactions/references/ai-chat-interactions-examples.md
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-chat/SKILL.md
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-chat/references/ai-chat-examples.md
- Network accessline 24
"Properties": { "OpenAIConnectionMetadata": { "Endpoint": "https://api.openai.com/v1", - Network accessline 25
[Credential-related source omitted] - Network accessline 26
"Endpoint": "https://api.openai.com/v1", - Network accessline 110
"Properties": { "AzureConnectionMetadata": { "Endpoint": "https://your-resource.openai.azure.com/", - Network accessline 111
"AzureConnectionMetadata": { "Endpoint": "https://your-resource.openai.azure.com/", "AuthenticationType": "ApiKey", - Network accessline 112
"Endpoint": "https://your-resource.openai.azure.com/",
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-connections/SKILL.md
- Network accessline 79
"Properties": { "OpenAIConnectionMetadata": { "Endpoint": "https://api.openai.com/v1", - Network accessline 80
[Credential-related source omitted] - Network accessline 81
"Endpoint": "https://api.openai.com/v1", - Network accessline 90
"Properties": { "AzureConnectionMetadata": { "Endpoint": "https://my-resource.openai.azure.com/", - Network accessline 91
"AzureConnectionMetadata": { "Endpoint": "https://my-resource.openai.azure.com/", "AuthenticationType": "ManagedIdentity", - Network accessline 92
"Endpoint": "https://my-resource.openai.azure.com/", - Network accessline 102
"Properties": { "AzureAIInferenceConnectionMetadata": { "Endpoint": "https://models.inference.ai.azure.com", - Network accessline 103
"AzureAIInferenceConnectionMetadata": { "Endpoint": "https://models.inference.ai.azure.com", "AuthenticationType": "ApiKey", - Network accessline 104
"Endpoint": "https://models.inference.ai.azure.com", - Network accessline 113
"DisplayText": "Local Ollama", "Properties": { "Endpoint": "http://localhost:11434" - Network accessline 114
"Properties": { "Endpoint": "http://localhost:11434" } - Network accessline 115
"Endpoint": "http://localhost:11434" - Network accessline 140
"Name": "azure-openai", "ClientName": "Azure", "Endpoint": "https://my-resource.openai.azure.com/", - Network accessline 141
"ClientName": "Azure", "Endpoint": "https://my-resource.openai.azure.com/", "AuthenticationType": "ApiKey", - Network accessline 142
"Endpoint": "https://my-resource.openai.azure.com/", - Network accessline 147
"Name": "local-ollama", "ClientName": "Ollama", "Endpoint": "http://localhost:11434" - Network accessline 148
"ClientName": "Ollama", "Endpoint": "http://localhost:11434" } - Network accessline 149
"Endpoint": "http://localhost:11434"
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-data-sources/references/data-sources-examples.md
- Network accessline 89
"ElasticsearchSourceMetadata": { "EnvironmentType": "SelfManaged", "Url": "https://search.example.com:9200", - Network accessline 90
"EnvironmentType": "SelfManaged", "Url": "https://search.example.com:9200", "AuthenticationType": "ApiKey", - Network accessline 91
"Url": "https://search.example.com:9200", - Network accessline 122
"Properties": { "AzureAISearchSourceMetadata": { "Endpoint": "https://contoso.search.windows.net", - Network accessline 123
"AzureAISearchSourceMetadata": { "Endpoint": "https://contoso.search.windows.net", "AuthenticationType": "ManagedIdentity", - Network accessline 124
"Endpoint": "https://contoso.search.windows.net", - Network accessline 199
"CrestApps": { "Elasticsearch": { "Url": "http://localhost:9200", - Network accessline 200
"Elasticsearch": { "Url": "http://localhost:9200", "AuthenticationType": "Basic", - Network accessline 201
"Url": "http://localhost:9200", - Network accessline 207
"DataSources": { "Elasticsearch": { "Url": "http://reporting:9200" - Network accessline 208
"Elasticsearch": { "Url": "http://reporting:9200" } - Network accessline 209
"Url": "http://reporting:9200"
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-mcp-client/SKILL.md
- Network accessline 44
1. Open **Artificial Intelligence → Model Context Protocol → MCP Hosts**. 2. Click **Add Connection** and choose **Server-Sent Events**. 3. Enter a **Title**, the server **Endpoint** (for example `https://mcp.example.com/`), and an **Authen - Network accessline 45
2. Click **Add Connection** and choose **Server-Sent Events**. 3. Enter a **Title**, the server **Endpoint** (for example `https://mcp.example.com/`), and an **Authentication** method. 4. Save. - Network accessline 46
3. Enter a **Title**, the server **Endpoint** (for example `https://mcp.example.com/`), and an **Authentication** method. - Network accessline 85
"Properties": { "SseMcpConnectionMetadata": { "Endpoint": "https://mcp.example.com/", - Network accessline 86
"SseMcpConnectionMetadata": { "Endpoint": "https://mcp.example.com/", "AuthenticationType": "ApiKey", - Network accessline 87
"Endpoint": "https://mcp.example.com/",
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-mcp-server/SKILL.md
- Network accessline 102
1. Enable `CrestApps.OrchardCore.AI.ToolInstances`. 2. Under **Artificial Intelligence → Tool Instances**, add one **Documentation search (sitemap)** instance per public site (for example `orchardcore-docs` with base URL `https://docs.orcha - Network accessline 103
2. Under **Artificial Intelligence → Tool Instances**, add one **Documentation search (sitemap)** instance per public site (for example `orchardcore-docs` with base URL `https://docs.orchardcore.net`). See `orchardcore-ai-tool-instances`. - Network accessline 125
"transport": { "type": "http", "url": "https://your-orchard-site.com/mcp", - Network accessline 126
"type": "http", "url": "https://your-orchard-site.com/mcp", "headers": { - Network accessline 127
"url": "https://your-orchard-site.com/mcp",
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-mcp/SKILL.md
- Network accessline 12
The [Model Context Protocol](https://modelcontextprotocol.io/introduction) is an open standard for connecting LLM applications to tools and data. The `CrestApps.OrchardCore.AI.Mcp` package lets Orchard Core act as an MCP **client** (use too - Network accessline 79
"Properties": { "SseMcpConnectionMetadata": { "Endpoint": "https://mcp-tools.example.com/", - Network accessline 80
"SseMcpConnectionMetadata": { "Endpoint": "https://mcp-tools.example.com/", "AuthenticationType": "Anonymous" - Network accessline 81
"Endpoint": "https://mcp-tools.example.com/", - Network accessline 120
- [Docker Hub MCP images](https://hub.docker.com/search?q=mcp) - Network accessline 121
- [MCP.so](https://mcp.so/) - Network accessline 122
- [Glama.ai MCP servers](https://glama.ai/mcp/servers) - Network accessline 123
- [MCPServers.org](https://mcpservers.org/)
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-mcp/references/ai-mcp-examples.md
- Network accessline 22
"Properties": { "SseMcpConnectionMetadata": { "Endpoint": "https://mcp-tools.example.com/", - Network accessline 23
"SseMcpConnectionMetadata": { "Endpoint": "https://mcp-tools.example.com/", "AuthenticationType": "OAuth2ClientCredentials", - Network accessline 24
"Endpoint": "https://mcp-tools.example.com/", - Network accessline 25
"AuthenticationType": "OAuth2ClientCredentials", "OAuth2TokenEndpoint": "https://auth.example.com/oauth2/token", "OAuth2ClientId": "orchard-site", - Network accessline 26
"OAuth2TokenEndpoint": "https://auth.example.com/oauth2/token", - Network accessline 84
"Properties": { "SseMcpConnectionMetadata": { "Endpoint": "https://db-tools.example.com/mcp", - Network accessline 85
"SseMcpConnectionMetadata": { "Endpoint": "https://db-tools.example.com/mcp", "AuthenticationType": "CustomHeaders", - Network accessline 86
"Endpoint": "https://db-tools.example.com/mcp", - Network accessline 160
"transport": { "type": "http", "url": "https://your-orchard-site.com/mcp", - Network accessline 161
"type": "http", "url": "https://your-orchard-site.com/mcp", "headers": { - Network accessline 162
"url": "https://your-orchard-site.com/mcp", - Network accessline 228
var client = _httpClientFactory.CreateClient(); var response = await client.GetStringAsync( new Uri(new Uri("https://api.example.com/"), SanitizePath(path)), - Network accessline 229
var response = await client.GetStringAsync( new Uri(new Uri("https://api.example.com/"), SanitizePath(path)), cancellationToken); - Network accessline 230
new Uri(new Uri("https://api.example.com/"), SanitizePath(path)),
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-providers/SKILL.md
- Network accessline 46
[Credential-related source omitted] - Network accessline 47
[Credential-related source omitted] - Network accessline 48
[Credential-related source omitted] - Network accessline 86
A Gemini connection typically uses `https://generativelanguage.googleapis.com/v1` as `Endpoint`. - Network accessline 100
"Properties": { "AzureConnectionMetadata": { "Endpoint": "https://my-resource.openai.azure.com/", - Network accessline 101
"AzureConnectionMetadata": { "Endpoint": "https://my-resource.openai.azure.com/", "AuthenticationType": "ManagedIdentity" - Network accessline 102
"Endpoint": "https://my-resource.openai.azure.com/", - Network accessline 168
"Name": "speech-to-text", "ClientName": "AzureSpeech", "Endpoint": "https://eastus.api.cognitive.microsoft.com/", - Network accessline 169
"ClientName": "AzureSpeech", "Endpoint": "https://eastus.api.cognitive.microsoft.com/", "AuthenticationType": "ApiKey", - Network accessline 170
"Endpoint": "https://eastus.api.cognitive.microsoft.com/", - Network accessline 195
"Name": "github-models", "ClientName": "AzureAIInference", "Endpoint": "https://models.inference.ai.azure.com", - Network accessline 196
"ClientName": "AzureAIInference", "Endpoint": "https://models.inference.ai.azure.com", "AuthenticationType": "ApiKey", - Network accessline 197
"Endpoint": "https://models.inference.ai.azure.com", - Network accessline 223
"AI": { "Connections": [ { "Name": "local-ollama", "ClientName": "Ollama", "Endpoint": "http://localhost:11434" } - Network accessline 224
"Connections": [ { "Name": "local-ollama", "ClientName": "Ollama", "Endpoint": "http://localhost:11434" } ], - Network accessline 225
{ "Name": "local-ollama", "ClientName": "Ollama", "Endpoint": "http://localhost:11434" }
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-tool-instances/SKILL.md
- Network accessline 115
"Properties": { "HttpApiRequestToolSettings": { "BaseUrl": "https://api.example.com/orders", - Network accessline 116
"HttpApiRequestToolSettings": { "BaseUrl": "https://api.example.com/orders", "PathTemplate": "{orderNumber}", - Network accessline 117
"BaseUrl": "https://api.example.com/orders", - Network accessline 143
"Properties": { "SitemapDocumentationToolSettings": { "BaseUrl": "https://docs.orchardcore.net" - Network accessline 144
"SitemapDocumentationToolSettings": { "BaseUrl": "https://docs.orchardcore.net" } - Network accessline 145
"BaseUrl": "https://docs.orchardcore.net" - Network accessline 153
"Properties": { "WebsiteSearchToolSettings": { "BaseUrl": "https://www.example.com" - Network accessline 154
"WebsiteSearchToolSettings": { "BaseUrl": "https://www.example.com" } - Network accessline 155
"BaseUrl": "https://www.example.com"
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-ai-web-crawlers/SKILL.md
- Network accessline 55
| **Include URL patterns** | `IncludeUrlPatterns` | Empty allows every page; otherwise a URL must match at least one | | **Exclude URL patterns** | `ExcludeUrlPatterns` | A URL matching any pattern is skipped; applied after include | | **Us - Network accessline 57
| **User-Agent** | `UserAgent` | `CrestApps-WebCrawler/1.0 (+https://crestapps.com)` | - Network accessline 59
Patterns are .NET regular expressions, one per line, matched against the full URL. Examples: `^https://example\.com/docs/` keeps only `/docs/`; `/tag/|/author/` drops taxonomy and author pages; `\.pdf$` drops PDF links. Invalid expressions - Network accessline 84
{ options.DefaultMaxConcurrentRequests = 2; options.DefaultUserAgent = "ContosoBot/1.0 (+https://contoso.com/bot)"; - Network accessline 85
options.DefaultMaxConcurrentRequests = 2; options.DefaultUserAgent = "ContosoBot/1.0 (+https://contoso.com/bot)"; }); - Network accessline 86
options.DefaultUserAgent = "ContosoBot/1.0 (+https://contoso.com/bot)";
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-contact-center/references/production-support.md
- Network accessline 38
"BaseVoiceVerification": { "AudioVerificationAcknowledged": true, "AudioVerificationEvidenceReference": "https://example.com/evidence/base-voice-2026-07" - Network accessline 39
"AudioVerificationAcknowledged": true, "AudioVerificationEvidenceReference": "https://example.com/evidence/base-voice-2026-07" } - Network accessline 40
"AudioVerificationEvidenceReference": "https://example.com/evidence/base-voice-2026-07"
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-crestapps-recipes/references/content-schemas.md
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-dnc-registry/SKILL.md
- Network accessline 59
| Registry | Key | Settings object | Properties | |---|---|---|---| | USA FTC | `usa-ftc-dnc` | `UsaFtcDncRegistrySettings` | `OrganizationId`, `BaseUrl` (default `https://telemarketing.donotcall.gov/api/`), `ProtectedApiKey` | - Network accessline 60
|---|---|---|---| | USA FTC | `usa-ftc-dnc` | `UsaFtcDncRegistrySettings` | `OrganizationId`, `BaseUrl` (default `https://telemarketing.donotcall.gov/api/`), `ProtectedApiKey` | | Canada LNNTE-DNCL | `canada-lnnte-dncl` | `CanadaDnclRegistr - Network accessline 61
| USA FTC | `usa-ftc-dnc` | `UsaFtcDncRegistrySettings` | `OrganizationId`, `BaseUrl` (default `https://telemarketing.donotcall.gov/api/`), `ProtectedApiKey` | - Network accessline 62
| Canada LNNTE-DNCL | `canada-lnnte-dncl` | `CanadaDnclRegistrySettings` | `AccountNumber`, `BaseUrl` (default `https://www.lnnte-dncl.gc.ca/api/`), `ProtectedApiKey` | - Network accessline 79
"UsaFtcDncRegistrySettings": { "OrganizationId": "example-org", "BaseUrl": "https://telemarketing.donotcall.gov/api/" - Network accessline 80
"OrganizationId": "example-org", "BaseUrl": "https://telemarketing.donotcall.gov/api/" } - Network accessline 81
"BaseUrl": "https://telemarketing.donotcall.gov/api/"
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-omnichannel-event-grid/SKILL.md
- Network accessline 60
"EventGrid": { "EventGridSasKey": "set-from-secrets", "AADIssuer": "https://sts.windows.net/<tenant-id>/", - Network accessline 61
"EventGridSasKey": "set-from-secrets", "AADIssuer": "https://sts.windows.net/<tenant-id>/", "AADAudience": "api://<application-id>", - Network accessline 62
"AADIssuer": "https://sts.windows.net/<tenant-id>/", - Network accessline 63
"AADAudience": "api://<application-id>", "AADMetadataAddress": "https://login.microsoftonline.com/<tenant-id>/.well-known/openid-configuration" } - Network accessline 64
"AADMetadataAddress": "https://login.microsoftonline.com/<tenant-id>/.well-known/openid-configuration"
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-payments/SKILL.md
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-point-of-sale/references/pos-api-examples.md
- Network accessline 3
A shift as a till app makes it. Paths are relative to `https://your-site/api/commerce/v1/`. Every call carries the staff member's bearer token; send an `Idempotency-Key` header on calls that take one. Responses omit some fields.
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-receipts/SKILL.md
- Network accessline 118
"ContactEmail": "billing@contoso.example", "ContactPhone": "+1 416 555 0100", "Website": "https://contoso.example", - Network accessline 119
"ContactPhone": "+1 416 555 0100", "Website": "https://contoso.example", "FooterText": "Thank you for your payment.", - Network accessline 120
"Website": "https://contoso.example",
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-shipping/SKILL.md
- Network accessline 77
"ShippingClasses": ["Bulky"], "Carriers": [ { "Name": "UPS", "TrackingUrlTemplate": "https://www.ups.com/track?tracknum={0}" } - Network accessline 78
"Carriers": [ { "Name": "UPS", "TrackingUrlTemplate": "https://www.ups.com/track?tracknum={0}" } ], - Network accessline 79
{ "Name": "UPS", "TrackingUrlTemplate": "https://www.ups.com/track?tracknum={0}" }
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-signalr/SKILL.md
- Network accessline 189
"SignalR": { "Azure": { "ConnectionString": "Endpoint=https://contoso.service.signalr.net;AccessKey=...;Version=1.0;" - Network accessline 190
"Azure": { "ConnectionString": "Endpoint=https://contoso.service.signalr.net;AccessKey=...;Version=1.0;" } - Network accessline 191
"ConnectionString": "Endpoint=https://contoso.service.signalr.net;AccessKey=...;Version=1.0;"
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-telephony-asterisk/SKILL.md
- Network accessline 61
|---|---|---| | Enable Asterisk provider | `IsEnabled` | Makes the provider selectable | | ARI base URL | `BaseUrl` | For example `http://localhost:8088/ari/`; `/ari` is appended when missing | - Network accessline 62
| Enable Asterisk provider | `IsEnabled` | Makes the provider selectable | | ARI base URL | `BaseUrl` | For example `http://localhost:8088/ari/`; `/ari` is appended when missing | | ARI user name and password | `UserName`, `Password` | Pass - Network accessline 63
| ARI base URL | `BaseUrl` | For example `http://localhost:8088/ari/`; `/ari` is appended when missing | - Network accessline 85
"Settings": { "IsEnabled": true, "BaseUrl": "https://pbx.example.com/ari/", - Network accessline 86
"IsEnabled": true, "BaseUrl": "https://pbx.example.com/ari/", "UserName": "orchard", - Network accessline 87
"BaseUrl": "https://pbx.example.com/ari/", - Network accessline 111
"Asterisk": { "Default": { "BaseUrl": "http://pbx.example.com:8088/ari/", - Network accessline 112
"Default": { "BaseUrl": "http://pbx.example.com:8088/ari/", "UserName": "<ari-user>", - Network accessline 113
"BaseUrl": "http://pbx.example.com:8088/ari/", - Network accessline 130
OrchardCore__CrestApps__Asterisk__Default__BaseUrl=http://pbx.example.com:8088/ari/
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-telephony-telnyx/SKILL.md
- Network accessline 77
| `WebRtcCodecs`, `WebRtcRegion` | SDK default, Automatic | Preferred codecs and signaling region | | `IceUrls`, `TurnUsername`, `TurnCredential`, `IceTransportPolicy` | SDK default, `all` | See STUN and TURN below | | `ApiBaseUrl` | `https - Network accessline 79
| `ApiBaseUrl` | `https://api.telnyx.com/v2/` | Override for testing |
src/CrestApps.AgentSkills/crestapps-orchardcore/orchardcore-websockets/SKILL.md
- Network accessline 65
"KeepAliveInterval": "00:00:30", "KeepAliveTimeout": "00:00:10", "AllowedOrigins": [ "https://app.example.com" ] - Network accessline 66
"KeepAliveTimeout": "00:00:10", "AllowedOrigins": [ "https://app.example.com" ] } - Network accessline 67
"AllowedOrigins": [ "https://app.example.com" ]
src/CrestApps.AgentSkills/orchardcore/orchardcore-amazon-s3-media/SKILL.md
- Network accessline 45
| `Region` | Region endpoint, e.g. `eu-central-1`. `Region` or `ServiceURL` is required. | | | `ServiceURL` | Custom endpoint (emulators, S3-compatible stores). Use instead of `Region`. | | | `ForcePathStyle` | Path-style addressing (`http: - Network accessline 46
| `ServiceURL` | Custom endpoint (emulators, S3-compatible stores). Use instead of `Region`. | | | `ForcePathStyle` | Path-style addressing (`http://host/bucket`), required by emulators. | `false` | | `Profile`, `ProfilesLocation` | AWS CLI - Network accessline 47
| `ForcePathStyle` | Path-style addressing (`http://host/bucket`), required by emulators. | `false` | - Access to secretsline 105
[Credential-related source omitted] - Network accessline 172
"Media": { "AmazonS3": { "ServiceURL": "http://localhost:9444/", - Network accessline 173
"AmazonS3": { "ServiceURL": "http://localhost:9444/", "Profile": "default", - Network accessline 174
"ServiceURL": "http://localhost:9444/",
src/CrestApps.AgentSkills/orchardcore/orchardcore-asset-manager/SKILL.md
- Network accessline 12
The Orchard Core Assets Manager compiles the frontend sources of modules and themes into their `wwwroot` folders. It is a Node.js CLI based on [Concurrently](https://github.com/open-cli-tools/concurrently) that reads `Assets.json` files and - Network accessline 394
- [Orchard Core Assets Manager guide](https://docs.orchardcore.net/en/latest/guides/assets-manager/) - Network accessline 395
- [Orchard Core 3.0.0 release notes](https://docs.orchardcore.net/en/latest/releases/3.0.0/#asset-manager) - Network accessline 396
- [Orchard Core 4.0.0 release notes](https://docs.orchardcore.net/en/latest/releases/4.0.0/)
src/CrestApps.AgentSkills/orchardcore/orchardcore-azure-ai-search/SKILL.md
- Network accessline 56
"Search": { "AzureAISearch": { "Endpoint": "https://[search-service-name].search.windows.net", - Network accessline 57
"AzureAISearch": { "Endpoint": "https://[search-service-name].search.windows.net", "IndexesPrefix": "", - Network accessline 58
"Endpoint": "https://[search-service-name].search.windows.net", - Access to secretsline 72
[Credential-related source omitted]
src/CrestApps.AgentSkills/orchardcore/orchardcore-azure-media/SKILL.md
- Network accessline 83
"Media": { "Azure": { "ConnectionString": "BlobEndpoint=https://myaccount.blob.core.windows.net/;SharedAccessSignature=sv=...", - Network accessline 84
"Azure": { "ConnectionString": "BlobEndpoint=https://myaccount.blob.core.windows.net/;SharedAccessSignature=sv=...", "ContainerName": "media", - Network accessline 85
"ConnectionString": "BlobEndpoint=https://myaccount.blob.core.windows.net/;SharedAccessSignature=sv=...",
src/CrestApps.AgentSkills/orchardcore/orchardcore-blazor/SKILL.md
- Network accessline 208
<main> <div class="top-row px-4"> <a href="https://docs.orchardcore.net/" target="_blank">Learn Orchard</a> - Network accessline 209
<div class="top-row px-4"> <a href="https://docs.orchardcore.net/" target="_blank">Learn Orchard</a> </div> - Network accessline 210
<a href="https://docs.orchardcore.net/" target="_blank">Learn Orchard</a>
src/CrestApps.AgentSkills/orchardcore/orchardcore-configuration/SKILL.md
src/CrestApps.AgentSkills/orchardcore/orchardcore-configuration/references/configuration-section-names.md
- Network accessline 87
}, "OrchardCore_Elasticsearch": { "Url": "http://localhost" - Network accessline 88
"OrchardCore_Elasticsearch": { "Url": "http://localhost" } - Network accessline 89
"Url": "http://localhost" - Network accessline 114
"Search": { "Elasticsearch": { "Url": "http://localhost" - Network accessline 115
"Elasticsearch": { "Url": "http://localhost" } - Network accessline 116
"Url": "http://localhost"
src/CrestApps.AgentSkills/orchardcore/orchardcore-content-fields/SKILL.md
- Network accessline 492
Required = true, LinkTextMode = LinkTextMode.Required, UrlPlaceholder = "https://example.com", - Network accessline 493
LinkTextMode = LinkTextMode.Required, UrlPlaceholder = "https://example.com", TextPlaceholder = "Click here", - Network accessline 494
UrlPlaceholder = "https://example.com", - Network accessline 603
Width = 640, Height = 360, Placeholder = "https://www.youtube.com/watch?v=...", - Network accessline 604
Height = 360, Placeholder = "https://www.youtube.com/watch?v=...", Hint = "Paste a YouTube video URL" - Network accessline 605
Placeholder = "https://www.youtube.com/watch?v=...",
src/CrestApps.AgentSkills/orchardcore/orchardcore-content-fields/references/content-fields-examples.md
- Network accessline 142
{ LinkTextMode = LinkTextMode.Optional, UrlPlaceholder = "https://example.com/product", - Network accessline 143
LinkTextMode = LinkTextMode.Optional, UrlPlaceholder = "https://example.com/product", TextPlaceholder = "View product page", - Network accessline 144
UrlPlaceholder = "https://example.com/product", - Network accessline 222
Width = 640, Height = 360, Placeholder = "https://www.youtube.com/watch?v=...", - Network accessline 223
Height = 360, Placeholder = "https://www.youtube.com/watch?v=...", Hint = "Optional video recording of the event" - Network accessline 224
Placeholder = "https://www.youtube.com/watch?v=...",
src/CrestApps.AgentSkills/orchardcore/orchardcore-contents-api/SKILL.md
- Network accessline 125
curl -X POST "https://cms.example.com/api/content?draft=true" \
src/CrestApps.AgentSkills/orchardcore/orchardcore-cors/SKILL.md
- Network accessline 52
|---|---| | Name | Use a stable descriptive name such as `PublicApi`. | | Allowed origins | Use complete origins such as `https://app.example.com`. | - Network accessline 53
| Name | Use a stable descriptive name such as `PublicApi`. | | Allowed origins | Use complete origins such as `https://app.example.com`. | | Allowed methods | Limit to the verbs required by the browser client. | - Network accessline 54
| Allowed origins | Use complete origins such as `https://app.example.com`. | - Network accessline 77
"Name": "Frontend", "AllowAnyOrigin": false, "AllowedOrigins": [ "https://app.example.com" ], - Network accessline 78
"AllowAnyOrigin": false, "AllowedOrigins": [ "https://app.example.com" ], "AllowAnyHeader": false, - Network accessline 79
"AllowedOrigins": [ "https://app.example.com" ], - Network accessline 109
{ Name = "PublicApi", AllowedOrigins = ["https://app.example.com"], - Network accessline 110
Name = "PublicApi", AllowedOrigins = ["https://app.example.com"], AllowedMethods = ["GET", "POST"], - Network accessline 111
AllowedOrigins = ["https://app.example.com"], - Network accessline 222
curl -i -X OPTIONS "https://cms.example.com/api/content/abc" \ - Network accessline 223
-H "Origin: https://app.example.com" \
src/CrestApps.AgentSkills/orchardcore/orchardcore-data-pipeline-steps/references/data-pipeline-steps-examples.md
- Network accessline 569
<label asp-for="Endpoint" class="ocat-label ocat-label-required">@T["Endpoint"]</label> <div class="ocat-end"> <input asp-for="Endpoint" type="url" class="form-control" placeholder="https://analytics.example.com" /> - Network accessline 570
<div class="ocat-end"> <input asp-for="Endpoint" type="url" class="form-control" placeholder="https://analytics.example.com" /> <span asp-validation-for="Endpoint"></span> - Network accessline 571
<input asp-for="Endpoint" type="url" class="form-control" placeholder="https://analytics.example.com" /> - Network accessline 670
"Y": 320, "Properties": { "SendToAnalyticsStepSettings": { "Endpoint": "https://analytics.example.com", "KeyField": "UserId" } - Network accessline 671
"Properties": { "SendToAnalyticsStepSettings": { "Endpoint": "https://analytics.example.com", "KeyField": "UserId" } } - Network accessline 672
"SendToAnalyticsStepSettings": { "Endpoint": "https://analytics.example.com", "KeyField": "UserId" }
src/CrestApps.AgentSkills/orchardcore/orchardcore-decoupled-cms/SKILL.md
src/CrestApps.AgentSkills/orchardcore/orchardcore-deployment-remote/SKILL.md
- Network accessline 74
|---|---| | `Name` | Admin-facing instance name. | | `Url` | Remote import endpoint, e.g. `https://example.com/OrchardCore.Deployment.Remote/ImportRemoteInstance/Import` (add the tenant URL prefix for a non-default tenant). | - Network accessline 75
| `Name` | Admin-facing instance name. | | `Url` | Remote import endpoint, e.g. `https://example.com/OrchardCore.Deployment.Remote/ImportRemoteInstance/Import` (add the tenant URL prefix for a non-default tenant). | | `ClientName` | Destina - Network accessline 76
| `Url` | Remote import endpoint, e.g. `https://example.com/OrchardCore.Deployment.Remote/ImportRemoteInstance/Import` (add the tenant URL prefix for a non-default tenant). |
src/CrestApps.AgentSkills/orchardcore/orchardcore-docker/SKILL.md
- Network accessline 52
EXPOSE 80 ENV ASPNETCORE_URLS=http://+:80 - Network accessline 53
ENV ASPNETCORE_URLS=http://+:80 - Network accessline 84
FROM mcr.microsoft.com/dotnet/aspnet:10.0 EXPOSE 80 ENV ASPNETCORE_URLS=http://+:80 - Network accessline 85
EXPOSE 80 ENV ASPNETCORE_URLS=http://+:80 WORKDIR /app - Network accessline 86
ENV ASPNETCORE_URLS=http://+:80 - Network accessline 313
EXPOSE 80 EXPOSE 443 ENV ASPNETCORE_URLS="https://+:443;http://+:80" - Network accessline 314
EXPOSE 443 ENV ASPNETCORE_URLS="https://+:443;http://+:80" ENV ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx - Network accessline 315
ENV ASPNETCORE_URLS="https://+:443;http://+:80" - Network accessline 352
FROM mcr.microsoft.com/dotnet/aspnet:10.0 ENV ASPNETCORE_URLS=http://+:8080 - Network accessline 353
ENV ASPNETCORE_URLS=http://+:8080 - Network accessline 375
EXPOSE 80 ENV ASPNETCORE_URLS=http://+:80 - Network accessline 376
ENV ASPNETCORE_URLS=http://+:80
src/CrestApps.AgentSkills/orchardcore/orchardcore-elasticsearch/SKILL.md
src/CrestApps.AgentSkills/orchardcore/orchardcore-email-azure/SKILL.md
- Network accessline 33
"Azure": { "DefaultSender": "DoNotReply@your-domain.azurecomm.net", "ConnectionString": "endpoint=https://your-resource.communication.azure.com/;accesskey=..." - Network accessline 34
"DefaultSender": "DoNotReply@your-domain.azurecomm.net", "ConnectionString": "endpoint=https://your-resource.communication.azure.com/;accesskey=..." } - Network accessline 35
"ConnectionString": "endpoint=https://your-resource.communication.azure.com/;accesskey=..."
src/CrestApps.AgentSkills/orchardcore/orchardcore-localization/SKILL.md
src/CrestApps.AgentSkills/orchardcore/orchardcore-markdown/SKILL.md
- Network accessline 282
| `yaml` | Parse YAML front matter. | | `nonascii-noescape` | Do not %-escape non-ASCII characters in URIs. | | `autolinks` | Auto-link URLs (`http://`, `ht - Network accessline 283
| `nonascii-noescape` | Do not %-escape non-ASCII characters in URIs. | | `autolinks` | Auto-link URLs (`http://`, `https://`, `ftp://`, `mailto:`, `www.`). | | `globalization` | Right-to-left content suppor - Network accessline 284
| `autolinks` | Auto-link URLs (`http://`, `https://`, `ftp://`, `mailto:`, `www.`). |
src/CrestApps.AgentSkills/orchardcore/orchardcore-media-gallery/SKILL.md
- Network accessline 98
authorization-code flow with PKCE required, sets local token validation (`Tenant: "Default"`), and registers the public `media_gallery` client. Before running it, replace `https://localhost:5001` with the tenant origin (keep the - Network accessline 99
(`Tenant: "Default"`), and registers the public `media_gallery` client. Before running it, replace `https://localhost:5001` with the tenant origin (keep the `/OrchardCore.Media/media-gallery-oidc-silent.html` path, including any tenant - Network accessline 100
running it, replace `https://localhost:5001` with the tenant origin (keep the - Network accessline 125
- Apply `MediaApiPkce` first, then **Media API — Standalone external app** (`MediaApiStandalone`). It enables `OrchardCore.Cors` with a default policy for the app origin (`AllowCredentials: false`), adds `callback.html` and `silent-callback - Network accessline 126
- `MediaApiStandaloneLocalhost` is the same for local development (app at `http://localhost:5173`, tenant at `https://localhost:5001`). Never use it in production. - Network accessline 130
{ "orchardBaseUrl": "https://cms.example.com/", - Network accessline 131
"orchardBaseUrl": "https://cms.example.com/", - Network accessline 132
"appBaseUrl": "https://media.example.com/", - Access to secretsline 208
[Credential-related source omitted]
src/CrestApps.AgentSkills/orchardcore/orchardcore-media-gallery/references/media-api-examples.md
- Network accessline 15
async function listFolder(path) { const response = await fetch(`${base}GetDirectoryContent?path=${encodeURIComponent(path)}`); - Network accessline 16
const response = await fetch(`${base}GetDirectoryContent?path=${encodeURIComponent(path)}`); - Network accessline 30
const response = await fetch(`${base}Upload?path=${encodeURIComponent(path)}`, { - Network accessline 40
async function moveFiles(names, sourceFolder, targetFolder) { await fetch(`${base}MoveMediaList`, { - Network accessline 41
await fetch(`${base}MoveMediaList`, { - Network accessline 48
async function deleteFiles(paths) { await fetch(`${base}DeleteMediaList`, { - Network accessline 49
await fetch(`${base}DeleteMediaList`, { - Network accessline 74
public MediaApiClient(HttpClient httpClient) { _httpClient = httpClient; // BaseAddress = https://cms.example.com/ (with tenant prefix) - Network accessline 75
{ _httpClient = httpClient; // BaseAddress = https://cms.example.com/ (with tenant prefix) } - Network accessline 76
_httpClient = httpClient; // BaseAddress = https://cms.example.com/ (with tenant prefix)
src/CrestApps.AgentSkills/orchardcore/orchardcore-media/SKILL.md
- Network accessline 53
"Media": { "MaxFileSize": 30000000, "CdnBaseUrl": "https://cdn.example.com", - Network accessline 54
"MaxFileSize": 30000000, "CdnBaseUrl": "https://cdn.example.com", "AssetsRequestPath": "/media", - Network accessline 55
"CdnBaseUrl": "https://cdn.example.com", - Network accessline 256
"Files": [ { "TargetPath": "images/logo.png", "SourcePath": "../wwwroot/images/logo.png" }, { "TargetPath": "images/banner.jpg", "SourceUrl": "https://example.com/banner.jpg" }, - Network accessline 257
{ "TargetPath": "images/logo.png", "SourcePath": "../wwwroot/images/logo.png" }, { "TargetPath": "images/banner.jpg", "SourceUrl": "https://example.com/banner.jpg" }, { "TargetPath": "docs/readme.txt", "Base64": "SGVsbG8=" } - Network accessline 258
{ "TargetPath": "images/banner.jpg", "SourceUrl": "https://example.com/banner.jpg" },
src/CrestApps.AgentSkills/orchardcore/orchardcore-module-creator/references/examples.md
src/CrestApps.AgentSkills/orchardcore/orchardcore-module-creator/references/module-structure.md
src/CrestApps.AgentSkills/orchardcore/orchardcore-modules/references/module-examples.md
src/CrestApps.AgentSkills/orchardcore/orchardcore-openapi/SKILL.md
- Network accessline 120
"AllowLogoutEndpoint": true, "RequireProofKeyForCodeExchange": true, "RedirectUris": "https://cms.example.com/OrchardCore.OpenApi/openapi-oidc-silent.html", - Network accessline 121
"RequireProofKeyForCodeExchange": true, "RedirectUris": "https://cms.example.com/OrchardCore.OpenApi/openapi-oidc-silent.html", "PostLogoutRedirectUris": "https://cms.example.com/", - Network accessline 122
"RedirectUris": "https://cms.example.com/OrchardCore.OpenApi/openapi-oidc-silent.html", - Network accessline 123
"PostLogoutRedirectUris": "https://cms.example.com/", - Network accessline 148
dotnet tool install -g NSwag.ConsoleCore # Against a running site with anonymous schema access enabled nswag openapi2csclient /input:https://localhost:5001/swagger/v1/swagger.json /output:OrchardClient.cs /namespace:MyApp.OrchardClient - Network accessline 150
nswag openapi2csclient /input:https://localhost:5001/swagger/v1/swagger.json /output:OrchardClient.cs /namespace:MyApp.OrchardClient
src/CrestApps.AgentSkills/orchardcore/orchardcore-openid/SKILL.md
- Network accessline 57
"name": "OpenIdServerSettings", "AccessTokenFormat": "JsonWebToken", "Authority": "https://auth.example.com", - Network accessline 58
"AccessTokenFormat": "JsonWebToken", "Authority": "https://auth.example.com", "EnableTokenEndpoint": true, - Network accessline 59
"Authority": "https://auth.example.com", - Network accessline 178
"AllowLogoutEndpoint": true, "RequireProofKeyForCodeExchange": true, "RedirectUris": "https://spa.example.com/callback https://spa.example.com/silent-renew", - Network accessline 179
"RequireProofKeyForCodeExchange": true, "RedirectUris": "https://spa.example.com/callback https://spa.example.com/silent-renew", "PostLogoutRedirectUris": "https://spa.example.com/logout-callback", - Network accessline 180
"RedirectUris": "https://spa.example.com/callback https://spa.example.com/silent-renew", - Network accessline 181
"PostLogoutRedirectUris": "https://spa.example.com/logout-callback", - Network accessline 252
OpenIddictConstants.Requirements.Features.ProofKeyForCodeExchange, }, RedirectUris = { new Uri("https://myapp.example.com/signin-oidc") }, - Network accessline 253
}, RedirectUris = { new Uri("https://myapp.example.com/signin-oidc") }, PostLogoutRedirectUris = { new Uri("https://myapp.example.com/signout-callback-oidc") }, - Network accessline 254
RedirectUris = { new Uri("https://myapp.example.com/signin-oidc") }, - Network accessline 255
PostLogoutRedirectUris = { new Uri("https://myapp.example.com/signout-callback-oidc") }, - Network accessline 343
{ "name": "OpenIdValidationSettings", "Authority": "https://idp.example.com", - Network accessline 344
"name": "OpenIdValidationSettings", "Authority": "https://idp.example.com", "Audience": "my-resource-server", - Network accessline 345
"Authority": "https://idp.example.com", - Network accessline 401
"name": "OpenIdClientSettings", "DisplayName": "Corporate IdP", "Authority": "https://login.microsoftonline.com/{tenant-id}/v2.0", - Network accessline 402
"DisplayName": "Corporate IdP", "Authority": "https://login.microsoftonline.com/{tenant-id}/v2.0", "ClientId": "azure-app-client-id", - Network accessline 403
"Authority": "https://login.microsoftonline.com/{tenant-id}/v2.0", - Network accessline 406
"CallbackPath": "/signin-oidc", "SignedOutCallbackPath": "/signout-callback-oidc", "SignedOutRedirectUri": "https://www.example.com/", - Network accessline 407
"SignedOutCallbackPath": "/signout-callback-oidc", "SignedOutRedirectUri": "https://www.example.com/", "ResponseType": "code", - Network accessline 408
"SignedOutRedirectUri": "https://www.example.com/",
src/CrestApps.AgentSkills/orchardcore/orchardcore-openid/references/openid-examples.md
- Network accessline 47
"AllowLogoutEndpoint": true, "RequireProofKeyForCodeExchange": true, "RedirectUris": "https://portal.example.com/signin-oidc", - Network accessline 48
"RequireProofKeyForCodeExchange": true, "RedirectUris": "https://portal.example.com/signin-oidc", "PostLogoutRedirectUris": "https://portal.example.com/signout-callback-oidc", - Network accessline 49
"RedirectUris": "https://portal.example.com/signin-oidc", - Network accessline 50
"PostLogoutRedirectUris": "https://portal.example.com/signout-callback-oidc", - Network accessline 137
OpenIddictConstants.Requirements.Features.ProofKeyForCodeExchange, }, RedirectUris = { new Uri("https://portal.example.com/signin-oidc") }, - Network accessline 138
}, RedirectUris = { new Uri("https://portal.example.com/signin-oidc") }, PostLogoutRedirectUris = { new Uri("https://portal.example.com/signout-callback-oidc") }, - Network accessline 139
RedirectUris = { new Uri("https://portal.example.com/signin-oidc") }, - Network accessline 140
PostLogoutRedirectUris = { new Uri("https://portal.example.com/signout-callback-oidc") }, - Network accessline 194
{ using var tokenResponse = await _httpClient.PostAsync( "https://cms.example.com/connect/token", - Network accessline 195
using var tokenResponse = await _httpClient.PostAsync( "https://cms.example.com/connect/token", new FormUrlEncodedContent(new Dictionary<string, string> - Network accessline 196
"https://cms.example.com/connect/token", - Access to secretsline 201
[Credential-related source omitted] - Network accessline 210
using var request = new HttpRequestMessage(HttpMethod.Get, $"https://cms.example.com/api/content/{contentItemId}"); - Access to secretsline 211
[Credential-related source omitted] - Network accessline 236
"AllowLogoutEndpoint": true, "RequireProofKeyForCodeExchange": true, "RedirectUris": "https://dashboard.example.com/callback https://dashboard.example.com/silent-renew", - Network accessline 237
"RequireProofKeyForCodeExchange": true, "RedirectUris": "https://dashboard.example.com/callback https://dashboard.example.com/silent-renew", "PostLogoutRedirectUris": "https://dashboard.example.com/logout", - Network accessline 238
"RedirectUris": "https://dashboard.example.com/callback https://dashboard.example.com/silent-renew", - Network accessline 239
"PostLogoutRedirectUris": "https://dashboard.example.com/logout", - Network accessline 251
Add a CORS policy for `https://dashboard.example.com` (see `orchardcore-cors`) when the SPA calls the API from another origin. - Network accessline 276
GET https://cms.example.com/connect/logout?id_token_hint={id_token}&post_logout_redirect_uri=https%3A%2F%2Fdashboard.example.com%2Flogout - Network accessline 305
{ "name": "OpenIdValidationSettings", "Authority": "https://auth.example.com", - Network accessline 306
"name": "OpenIdValidationSettings", "Authority": "https://auth.example.com", "Audience": "portal-resource-server" - Network accessline 307
"Authority": "https://auth.example.com",
src/CrestApps.AgentSkills/orchardcore/orchardcore-recaptcha/SKILL.md
- Network accessline 73
"SiteKey": "your-site-key", "SecretKey": "your-secret-key", "ReCaptchaScriptUri": "https://www.google.com/recaptcha/api.js", - Network accessline 74
"SecretKey": "your-secret-key", "ReCaptchaScriptUri": "https://www.google.com/recaptcha/api.js", "ReCaptchaApiUri": "https://www.google.com/recaptcha/api/siteverify" - Network accessline 75
"ReCaptchaScriptUri": "https://www.google.com/recaptcha/api.js", - Network accessline 76
"ReCaptchaApiUri": "https://www.google.com/recaptcha/api/siteverify"
src/CrestApps.AgentSkills/orchardcore/orchardcore-recipes/SKILL.md
- Network accessline 55
"description": "Creates the baseline configuration.", "author": "My Team", "website": "https://example.invalid", - Network accessline 56
"author": "My Team", "website": "https://example.invalid", "version": "1.0.0", - Network accessline 57
"website": "https://example.invalid", - Network accessline 135
"description": "Provisions a My Site tenant.", "author": "My Team", "website": "https://example.invalid", - Network accessline 136
"author": "My Team", "website": "https://example.invalid", "version": "1.0.0", - Network accessline 137
"website": "https://example.invalid", - Network accessline 328
The PKCE recipes contain a `https://localhost:5001` origin in `RedirectUris`/`PostLogoutRedirectUris` and `Default` as the validation `Tenant`; copy the recipe and replace both before running it on a real tenant. Run them with the `Recipes`
src/CrestApps.AgentSkills/orchardcore/orchardcore-recipes/references/recipe-schemas/AIToolInstances.schema.json
- Network accessline 191
"BaseUrl": { "type": "string", "description": "Root URL of the site to search (for example https://www.example.com)." - Network accessline 192
"type": "string", "description": "Root URL of the site to search (for example https://www.example.com)." }, - Network accessline 193
"description": "Root URL of the site to search (for example https://www.example.com)."
src/CrestApps.AgentSkills/orchardcore/orchardcore-recipes/references/recipe-schemas/Settings.schema.json
- Network accessline 2271
"string" ], "description": "Optional override of the Telnyx REST API base address. Empty uses https://api.telnyx.com/v2/." - Network accessline 2272
], "description": "Optional override of the Telnyx REST API base address. Empty uses https://api.telnyx.com/v2/." }, - Network accessline 2273
"description": "Optional override of the Telnyx REST API base address. Empty uses https://api.telnyx.com/v2/." - Network accessline 2432
"string" ], "description": "Optional override of the Telnyx REST API base address. Empty uses https://api.telnyx.com/v2/." - Network accessline 2433
], "description": "Optional override of the Telnyx REST API base address. Empty uses https://api.telnyx.com/v2/." } - Network accessline 2434
"description": "Optional override of the Telnyx REST API base address. Empty uses https://api.telnyx.com/v2/."
src/CrestApps.AgentSkills/orchardcore/orchardcore-recipes/references/recipe-schemas/TelnyxSettings.schema.json
- Network accessline 68
"string" ], "description": "Optional override of the Telnyx REST API base address. Empty uses https://api.telnyx.com/v2/." - Network accessline 69
], "description": "Optional override of the Telnyx REST API base address. Empty uses https://api.telnyx.com/v2/." }, - Network accessline 70
"description": "Optional override of the Telnyx REST API base address. Empty uses https://api.telnyx.com/v2/."
src/CrestApps.AgentSkills/orchardcore/orchardcore-recipes/references/recipe-schemas/TelnyxSmsSettings.schema.json
- Network accessline 41
"string" ], "description": "Optional override of the Telnyx REST API base address. Empty uses https://api.telnyx.com/v2/." - Network accessline 42
], "description": "Optional override of the Telnyx REST API base address. Empty uses https://api.telnyx.com/v2/." } - Network accessline 43
"description": "Optional override of the Telnyx REST API base address. Empty uses https://api.telnyx.com/v2/."
src/CrestApps.AgentSkills/orchardcore/orchardcore-recipes/references/recipe-schemas/WorkflowType.schema.json
- Network accessline 1476
}, "additionalProperties": false, "description": "The optional URL prefix for the tenant, for example \u0027site1\u0027 in \u0027http://orchardproject.net/site1\u0027. Supports Liquid - Network accessline 1477
"additionalProperties": false, "description": "The optional URL prefix for the tenant, for example \u0027site1\u0027 in \u0027http://orchardproject.net/site1\u0027. Supports Liquid syntax." - Network accessline 1478
"description": "The optional URL prefix for the tenant, for example \u0027site1\u0027 in \u0027http://orchardproject.net/site1\u0027. Supports Liquid syntax." - Network accessline 1490
}, "additionalProperties": false, "description": "The optional host name for the tenant, for example \u0027orchardproject.net\u0027 in \u0027http://orchardproject.net/\u0027. Supports - Network accessline 1491
"additionalProperties": false, "description": "The optional host name for the tenant, for example \u0027orchardproject.net\u0027 in \u0027http://orchardproject.net/\u0027. Supports Liquid syntax." - Network accessline 1492
"description": "The optional host name for the tenant, for example \u0027orchardproject.net\u0027 in \u0027http://orchardproject.net/\u0027. Supports Liquid syntax."
src/CrestApps.AgentSkills/orchardcore/orchardcore-resources/SKILL.md
- Network accessline 87
.SetUrl("~/MyModule/js/custom.min.js", "~/MyModule/js/custom.js") .SetCdn( "https://cdn.example.com/custom.min.js", - Network accessline 88
.SetCdn( "https://cdn.example.com/custom.min.js", "https://cdn.example.com/custom.js") - Network accessline 89
"https://cdn.example.com/custom.min.js", - Network accessline 90
"https://cdn.example.com/custom.js") - Network accessline 133
"ResourceDebugMode": "FromConfiguration", "UseCdn": false, "CdnBaseUrl": "https://cdn.example.com", - Network accessline 134
"UseCdn": false, "CdnBaseUrl": "https://cdn.example.com", "AppendVersion": true - Network accessline 135
"CdnBaseUrl": "https://cdn.example.com",
src/CrestApps.AgentSkills/orchardcore/orchardcore-sanitizer/SKILL.md
- Network accessline 24
- Configure the sanitizer using `ConfigureHtmlSanitizer` during service registration; multiple calls are combined. - Sanitizer configuration actions must be deterministic, because results are cached per tenant (see below). - The sanitizer i - Network accessline 25
- Sanitizer configuration actions must be deterministic, because results are cached per tenant (see below). - The sanitizer is based on the [HtmlSanitizer](https://github.com/mganss/HtmlSanitizer) library. - Always seal classes. - Network accessline 26
- The sanitizer is based on the [HtmlSanitizer](https://github.com/mganss/HtmlSanitizer) library.
src/CrestApps.AgentSkills/orchardcore/orchardcore-search-indexing/SKILL.md
src/CrestApps.AgentSkills/orchardcore/orchardcore-security/references/security-examples.md
- Network accessline 41
"Name": "Frontend", "AllowAnyOrigin": false, "AllowedOrigins": [ "https://app.example.com" ], - Network accessline 42
"AllowAnyOrigin": false, "AllowedOrigins": [ "https://app.example.com" ], "AllowAnyMethod": false, - Network accessline 43
"AllowedOrigins": [ "https://app.example.com" ], - Network accessline 74
"AllowLogoutEndpoint": true, "RequireProofKeyForCodeExchange": true, "RedirectUris": "https://myapp.example.com/callback", - Network accessline 75
"RequireProofKeyForCodeExchange": true, "RedirectUris": "https://myapp.example.com/callback", "PostLogoutRedirectUris": "https://myapp.example.com/signout-callback", - Network accessline 76
"RedirectUris": "https://myapp.example.com/callback", - Network accessline 77
"PostLogoutRedirectUris": "https://myapp.example.com/signout-callback", - Network accessline 139
{ "type": "https://tools.ietf.org/html/rfc9110#section-15.5.2", - Network accessline 140
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.2",
src/CrestApps.AgentSkills/orchardcore/orchardcore-seo/SKILL.md
- Network accessline 192
- Canonical: when empty, the absolute display URL of the item (from its route, e.g. `AutoroutePart`). - Open Graph and Twitter title/description fall back to `PageTitle` and `MetaDescription`. - Images fall back to `DefaultSocialImage`. Ima - Network accessline 193
- Open Graph and Twitter title/description fall back to `PageTitle` and `MetaDescription`. - Images fall back to `DefaultSocialImage`. Image URLs are mapped through the media store and made absolute; when media is served from a CDN (`MapPat - Network accessline 194
- Images fall back to `DefaultSocialImage`. Image URLs are mapped through the media store and made absolute; when media is served from a CDN (`MapPathToPublicUrl` already returns `https://...`), the CDN URL is used as-is (fixed in 4.0, it u - Network accessline 220
{ "@context": "https://schema.org", - Network accessline 221
"@context": "https://schema.org", - Network accessline 324
"MetaDescription": "{{Description}}", "MetaKeywords": "{{Keywords}}", "Canonical": "https://{{YourDomain}}/{{CanonicalPath}}", - Network accessline 325
"MetaKeywords": "{{Keywords}}", "Canonical": "https://{{YourDomain}}/{{CanonicalPath}}", "MetaRobots": "index, follow", - Network accessline 326
"Canonical": "https://{{YourDomain}}/{{CanonicalPath}}", - Network accessline 340
"TwitterCreator": "@{{TwitterHandle}}", "TwitterSite": "@{{SiteTwitterHandle}}", "GoogleSchema": "{\"@context\":\"https://schema.org\",\"@type\":\"WebPage\",\"name\":\"{{PageTitle}}\"}", - Network accessline 341
"TwitterSite": "@{{SiteTwitterHandle}}", "GoogleSchema": "{\"@context\":\"https://schema.org\",\"@type\":\"WebPage\",\"name\":\"{{PageTitle}}\"}", "CustomMetaTags": [ - Network accessline 342
"GoogleSchema": "{\"@context\":\"https://schema.org\",\"@type\":\"WebPage\",\"name\":\"{{PageTitle}}\"}",
src/CrestApps.AgentSkills/orchardcore/orchardcore-seo/references/seo-examples.md
- Network accessline 97
"TwitterCreator": "@audiostore", "TwitterSite": "@audiostore", "GoogleSchema": "{\"@context\":\"https://schema.org\",\"@type\":\"Product\",\"name\":\"Wireless Headphones Pro\",\"description\":\"Premium wireless headp - Network accessline 98
"TwitterSite": "@audiostore", "GoogleSchema": "{\"@context\":\"https://schema.org\",\"@type\":\"Product\",\"name\":\"Wireless Headphones Pro\",\"description\":\"Premium wireless headphones with active noise cancellation and 30-h - Network accessline 99
"GoogleSchema": "{\"@context\":\"https://schema.org\",\"@type\":\"Product\",\"name\":\"Wireless Headphones Pro\",\"description\":\"Premium wireless headphones with active noise cancellation and 30-hour battery life.\",\"image\":\"https://ex - Network accessline 220
}, "TwitterCard": "summary_large_image", "GoogleSchema": "{\"@context\":\"https://schema.org\",\"@type\":\"Organization\",\"name\":\"AudioStore\",\"url\":\"https://example.com\",\"logo\":\"https://example.com/media/s - Network accessline 221
"TwitterCard": "summary_large_image", "GoogleSchema": "{\"@context\":\"https://schema.org\",\"@type\":\"Organization\",\"name\":\"AudioStore\",\"url\":\"https://example.com\",\"logo\":\"https://example.com/media/site/logo.png\", - Network accessline 222
"GoogleSchema": "{\"@context\":\"https://schema.org\",\"@type\":\"Organization\",\"name\":\"AudioStore\",\"url\":\"https://example.com\",\"logo\":\"https://example.com/media/site/logo.png\",\"sameAs\":[\"https://twitter.com/audiostore\",\"h - Network accessline 260
"OpenGraphDescription": "Learn how to configure SEO features in Orchard Core.", "TwitterCard": "summary_large_image", "GoogleSchema": "[{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"Comple - Network accessline 261
"TwitterCard": "summary_large_image", "GoogleSchema": "[{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"Complete Guide to SEO in Orchard Core\",\"author\":{\"@type\":\"Person\",\"name\":\"Jane Smith\"}, - Network accessline 262
"GoogleSchema": "[{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"Complete Guide to SEO in Orchard Core\",\"author\":{\"@type\":\"Person\",\"name\":\"Jane Smith\"},\"datePublished\":\"2025-01-15\",\"dateModified\":
src/CrestApps.AgentSkills/orchardcore/orchardcore-setup/SKILL.md
- Network accessline 220
# Navigate to https://localhost:5001
src/CrestApps.AgentSkills/orchardcore/orchardcore-setup/references/setup-examples.md
- Network accessline 16
Navigate to `https://localhost:5001` and complete setup: - Network accessline 52
"description": "Sets up a basic e-commerce site with products and categories", "author": "CrestApps", "website": "https://crestapps.com", - Network accessline 53
"author": "CrestApps", "website": "https://crestapps.com", "version": "1.0.0", - Network accessline 54
"website": "https://crestapps.com",
src/CrestApps.AgentSkills/orchardcore/orchardcore-shape-discovery/references/runtime-discovery.md
- Network accessline 146
- [Orchard Core Shapes](https://docs.orchardcore.net/en/latest/topics/display/shapes/) - Network accessline 147
- [Orchard Core Placement](https://docs.orchardcore.net/en/latest/reference/modules/Placement/) - Network accessline 148
- [Orchard Core Placements module](https://docs.orchardcore.net/en/latest/reference/modules/Placements/) - Network accessline 149
- [Orchard Core Templates](https://docs.orchardcore.net/en/latest/reference/modules/Templates/) - Network accessline 150
- [Orchard Core Liquid](https://docs.orchardcore.net/en/latest/reference/modules/Liquid/)
src/CrestApps.AgentSkills/orchardcore/orchardcore-site-settings/SKILL.md
- Network accessline 540
"name": "Settings", "SiteName": "My Orchard Core Site", "BaseUrl": "https://www.example.com", - Network accessline 541
"SiteName": "My Orchard Core Site", "BaseUrl": "https://www.example.com", "TimeZoneId": "America/New_York", - Network accessline 542
"BaseUrl": "https://www.example.com", - Network accessline 547
"UseCdn": false, "SocialMediaSettings": { "FacebookUrl": "https://facebook.com/contoso", - Network accessline 548
"SocialMediaSettings": { "FacebookUrl": "https://facebook.com/contoso", "ShowSocialLinks": true - Network accessline 549
"FacebookUrl": "https://facebook.com/contoso",
src/CrestApps.AgentSkills/orchardcore/orchardcore-site-settings/references/site-settings-examples.md
- Network accessline 191
<label asp-for="FacebookUrl" class="ocat-label">@T["Facebook URL"]</label> <div class="ocat-end"> <input asp-for="FacebookUrl" class="form-control" placeholder="https://facebook.com/yourpage" /> - Network accessline 192
<div class="ocat-end"> <input asp-for="FacebookUrl" class="form-control" placeholder="https://facebook.com/yourpage" /> <span asp-validation-for="FacebookUrl"></span> - Network accessline 193
<input asp-for="FacebookUrl" class="form-control" placeholder="https://facebook.com/yourpage" /> - Network accessline 408
"name": "Settings", "SiteName": "Contoso Corporate Portal", "BaseUrl": "https://www.contoso.com", - Network accessline 409
"SiteName": "Contoso Corporate Portal", "BaseUrl": "https://www.contoso.com", "TimeZoneId": "Europe/London", - Network accessline 410
"BaseUrl": "https://www.contoso.com", - Network accessline 416
"UseCdn": false, "SocialMediaSettings": { "FacebookUrl": "https://facebook.com/contoso", - Network accessline 417
"SocialMediaSettings": { "FacebookUrl": "https://facebook.com/contoso", "XHandle": "contoso", - Network accessline 418
"FacebookUrl": "https://facebook.com/contoso", - Network accessline 419
"XHandle": "contoso", "LinkedInUrl": "https://linkedin.com/company/contoso", "ShowSocialLinks": true - Network accessline 420
"LinkedInUrl": "https://linkedin.com/company/contoso", - Network accessline 443
{% assign social = Site.Properties.SocialMediaSettings %} {% if social.ShowSocialLinks %} <a href="https://x.com/{{ social.XHandle }}">X</a> - Network accessline 444
{% if social.ShowSocialLinks %} <a href="https://x.com/{{ social.XHandle }}">X</a> {% endif %} - Network accessline 445
<a href="https://x.com/{{ social.XHandle }}">X</a>
src/CrestApps.AgentSkills/orchardcore/orchardcore-sms-azure/SKILL.md
- Network accessline 78
"Azure": { "PhoneNumber": "+18005551234", "ConnectionString": "endpoint=https://your-resource.communication.azure.com/;accesskey=your-key" - Network accessline 79
"PhoneNumber": "+18005551234", "ConnectionString": "endpoint=https://your-resource.communication.azure.com/;accesskey=your-key" } - Network accessline 80
"ConnectionString": "endpoint=https://your-resource.communication.azure.com/;accesskey=your-key"
src/CrestApps.AgentSkills/orchardcore/orchardcore-sms/SKILL.md
src/CrestApps.AgentSkills/orchardcore/orchardcore-temp-file-storage/SKILL.md
src/CrestApps.AgentSkills/orchardcore/orchardcore-tenants/SKILL.md
src/CrestApps.AgentSkills/orchardcore/orchardcore-tenants/references/tenants-examples.md
- Network accessline 13
# Set up the Default tenant with the SaaS recipe # Navigate to https://localhost:5001 and complete setup: - Network accessline 14
# Navigate to https://localhost:5001 and complete setup: - Network accessline 30
- **Site Name**: Company Blog - **Admin**: admin / Password123! 6. Access the blog at `https://localhost:5001/blog`. - Network accessline 32
6. Access the blog at `https://localhost:5001/blog`. - Network accessline 39
for tenant in Marketing Engineering Sales; do prefix=$(echo "$tenant" | tr '[:upper:]' '[:lower:]') curl -X POST https://localhost:5001/api/tenants/create \ - Network accessline 40
prefix=$(echo "$tenant" | tr '[:upper:]' '[:lower:]') curl -X POST https://localhost:5001/api/tenants/create \ -H "Content-Type: application/json" \ - Network accessline 41
curl -X POST https://localhost:5001/api/tenants/create \
src/CrestApps.AgentSkills/orchardcore/orchardcore-tester/SKILL.md
- Dangerous shell operationline 38
rm -rf "$WEB_PROJECT/App_Data" - Network accessline 43
OrchardCore__AutoSetup__AutoSetupPath= OrchardCore__AutoSetup__Tenants__0__ShellName=Default OrchardCore__AutoSetup__Tenants__0__SiteName=TestSite OrchardCore__AutoSetup__Tenants__0__SiteTimeZone=America/Los_Angeles OrchardCore__AutoSet - Network accessline 50
OrchardCore__AutoSetup__Tenants__0__DatabaseProvider=Sqlite \ OrchardCore__AutoSetup__Tenants__0__RecipeName=Blog \ dotnet run --project "$WEB_PROJECT" --no-build --urls "http://localhost:$PORT" > autosetup-console.log 2>&1 & - Network accessline 52
dotnet run --project "$WEB_PROJECT" --no-build --urls "http://localhost:$PORT" > autosetup-console.log 2>&1 & - Network accessline 54
# 4. Trigger and confirm. curl -s -o /dev/null "http://localhost:$PORT/" - Network accessline 55
curl -s -o /dev/null "http://localhost:$PORT/" - Network accessline 89
# Start the site in a background process $proc = Start-Process dotnet ` -ArgumentList "run","--no-build","--urls","http://localhost:$port" ` - Network accessline 90
$proc = Start-Process dotnet -ArgumentList "run","--no-build","--urls","http://localhost:$port" - Network accessline 91
-ArgumentList "run","--no-build","--urls","http://localhost:$port" ` - Network accessline 95
# Save PID for later cleanup $proc.Id | Out-File ".orchardcore-pid" -NoNewline Write-Host "Started Orchard Core (PID: $($proc.Id)) on http://localhost:$port" - Network accessline 97
Write-Host "Started Orchard Core (PID: $($proc.Id)) on http://localhost:$port" - Network accessline 106
while ($elapsed -lt $timeout) { try { $response = Invoke-WebRequest -Uri "http://localhost:$port" -UseBasicParsing -TimeoutSec 2 - Network accessline 107
try { $response = Invoke-WebRequest -Uri "http://localhost:$port" -UseBasicParsing -TimeoutSec 2 Write-Host "Application ready at http://localhost:$port" - Network accessline 108
$response = Invoke-WebRequest -Uri "http://localhost:$port" -UseBasicParsing -TimeoutSec 2 - Network accessline 109
Write-Host "Application ready at http://localhost:$port" - Dangerous shell operationline 135
rm -f .orchardcore-pid - Network accessline 169
PORT=$(cat .orchardcore-port) playwright-cli --browser webkit open "http://localhost:$PORT/" - Network accessline 170
playwright-cli --browser webkit open "http://localhost:$PORT/" - Network accessline 185
PORT=$(cat .orchardcore-port) playwright-cli open "http://localhost:$PORT/Login" - Network accessline 186
playwright-cli open "http://localhost:$PORT/Login" - Dangerous shell operationline 190
playwright-cli eval '((p)=>{var s=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value").set; s.call(p,"Password1!"); p.dispatchEvent(new Event("input",{bubbles:true})); p.dispatchEvent(new Event("change",{bubbles:true}) - Network accessline 192
playwright-cli click <login-button-ref> playwright-cli open "http://localhost:$PORT/Admin" - Network accessline 193
playwright-cli open "http://localhost:$PORT/Admin" - Dangerous shell operationline 194
playwright-cli eval 'window.location.pathname' # "/Admin" when signed in - Network accessline 203
playwright-cli open http://localhost:$port/Admin/Media - Network accessline 209
playwright-cli open http://localhost:$port/Admin/Contents/ContentItems - Network accessline 216
playwright-cli open http://localhost:$port/Admin/Features - Dangerous shell operationline 234
playwright-cli eval "document.title" - Dangerous shell operationline 235
playwright-cli eval "document.querySelector('h1.oc-breadcrumb-title')?.textContent.trim()"
src/CrestApps.AgentSkills/orchardcore/orchardcore-tester/references/admin-navigation.md
- Dangerous shell operationline 76
playwright-cli eval "document.querySelector('h1.oc-breadcrumb-title')?.textContent.trim()" - Dangerous shell operationline 77
playwright-cli eval "[...document.querySelectorAll('ol.breadcrumb li')].map(li => li.textContent.trim())" - Network accessline 146
# Navigate to login playwright-cli open http://localhost:$port/Login - Network accessline 147
playwright-cli open http://localhost:$port/Login - Network accessline 156
# Navigate to admin playwright-cli open http://localhost:$port/Admin - Network accessline 157
playwright-cli open http://localhost:$port/Admin
src/CrestApps.AgentSkills/orchardcore/orchardcore-tester/references/autosetup.md
- Network accessline 36
OrchardCore__AutoSetup__AutoSetupPath= OrchardCore__AutoSetup__Tenants__0__ShellName=Default OrchardCore__AutoSetup__Tenants__0__SiteName=TestSite OrchardCore__AutoSetup__Tenants__0__SiteTimeZone=America/Los_Angeles OrchardCore__AutoSet - Network accessline 43
OrchardCore__AutoSetup__Tenants__0__DatabaseProvider=Sqlite \ OrchardCore__AutoSetup__Tenants__0__RecipeName=Blog \ dotnet run --project "$WEB_PROJECT" --no-build --urls "http://localhost:$PORT" > autosetup-console.log 2>&1 & - Network accessline 45
dotnet run --project "$WEB_PROJECT" --no-build --urls "http://localhost:$PORT" > autosetup-console.log 2>&1 & - Network accessline 47
curl -s -o /dev/null "http://localhost:$PORT/" - Network accessline 64
$env:OrchardCore__AutoSetup__Tenants__0__DatabaseProvider = "Sqlite" $env:OrchardCore__AutoSetup__Tenants__0__RecipeName = "Blog" dotnet run --project $webProject --no-build --urls "http://localhost:$port" - Network accessline 66
dotnet run --project $webProject --no-build --urls "http://localhost:$port"
src/CrestApps.AgentSkills/orchardcore/orchardcore-tester/references/common-features.md
- Network accessline 10
# Navigate to Media playwright-cli open http://localhost:5000/Admin/Media - Network accessline 11
playwright-cli open http://localhost:5000/Admin/Media - Network accessline 38
# Navigate to content items playwright-cli open http://localhost:5000/Admin/Contents/ContentItems - Network accessline 39
playwright-cli open http://localhost:5000/Admin/Contents/ContentItems - Network accessline 77
# Navigate to Features playwright-cli open http://localhost:5000/Admin/Features - Network accessline 78
playwright-cli open http://localhost:5000/Admin/Features - Network accessline 107
# Navigate to Users playwright-cli open http://localhost:5000/Admin/Users/Index - Network accessline 108
playwright-cli open http://localhost:5000/Admin/Users/Index - Network accessline 135
# Navigate to Content Types playwright-cli open http://localhost:5000/Admin/ContentTypes/List - Network accessline 136
playwright-cli open http://localhost:5000/Admin/ContentTypes/List - Network accessline 173
# Navigate to Themes playwright-cli open http://localhost:5000/Admin/Themes - Network accessline 174
playwright-cli open http://localhost:5000/Admin/Themes - Dangerous shell operationline 207
playwright-cli eval "document.title"
src/CrestApps.AgentSkills/orchardcore/orchardcore-tester/references/debugging.md
- Network accessline 67
Start-Process dotnet -ArgumentList "run --urls http://localhost:$port" `
src/CrestApps.AgentSkills/orchardcore/orchardcore-tester/references/playwright-cli.md
- Network accessline 16
playwright-cli --browser webkit open "http://localhost:$PORT/Login" - Dangerous shell operationline 25
`playwright-cli eval '<expr>'` runs your text as `() => (<expr>)`. - Dangerous shell operationline 32
playwright-cli eval 'document.getElementById("Password").value' - Dangerous shell operationline 42
playwright-cli eval '((p)=>{var s=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value").set; s.call(p,"Password1!"); p.dispatchEvent(new Event("input",{bubbles:true})); p.dispatchEvent(new Event("change",{bubbles:true})
src/CrestApps.AgentSkills/orchardcore/orchardcore-tester/references/setup-wizard.md
- Network accessline 49
# 1. Open the wizard and capture refs. playwright-cli --browser webkit open "http://localhost:$PORT/" - Network accessline 50
playwright-cli --browser webkit open "http://localhost:$PORT/" - Dangerous shell operationline 62
playwright-cli eval 'document.getElementById("RecipeName").value' # "Blog" - Dangerous shell operationline 67
playwright-cli eval '((p)=>{var s=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value").set; s.call(p,"Password1!"); p.dispatchEvent(new Event("input",{bubbles:true})); p.dispatchEvent(new Event("change",{bubbles:true}) - Dangerous shell operationline 68
playwright-cli eval '((p)=>{var s=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value").set; s.call(p,"Password1!"); p.dispatchEvent(new Event("input",{bubbles:true})); p.dispatchEvent(new Event("change",{bubbles:true}) - Dangerous shell operationline 69
playwright-cli eval 'document.getElementById("Password").value+"|"+document.getElementById("PasswordConfirmation").value' - Dangerous shell operationline 73
playwright-cli eval 'window.location.pathname+" | "+document.title'
src/CrestApps.AgentSkills/orchardcore/orchardcore-theme-creator/SKILL.md
src/CrestApps.AgentSkills/orchardcore/orchardcore-theme-creator/references/theme-structure.md
- Network accessline 40
Name = "Contoso Theme", Author = "Contoso", Website = "https://contoso.com", - Network accessline 41
Author = "Contoso", Website = "https://contoso.com", Version = "1.0.0", - Network accessline 42
Website = "https://contoso.com", - Network accessline 55
Name = "Contoso Admin", Author = "Contoso", Website = "https://contoso.com", - Network accessline 56
Author = "Contoso", Website = "https://contoso.com", Version = "1.0.0", - Network accessline 57
Website = "https://contoso.com",
src/CrestApps.AgentSkills/orchardcore/orchardcore-theming/references/theming-examples.md
src/CrestApps.AgentSkills/orchardcore/orchardcore-users-roles/SKILL.md
src/CrestApps.AgentSkills/orchardcore/orchardcore-xml-rpc/SKILL.md
- Network accessline 156
1. Enable the `Remote Publishing` feature. 2. In the client, add a new account and choose the MetaWeblog API. 3. Point the endpoint at `https://your-site/xmlrpc/metaweblog`. - Network accessline 157
2. In the client, add a new account and choose the MetaWeblog API. 3. Point the endpoint at `https://your-site/xmlrpc/metaweblog`. 4. Sign in as a user who can create and publish the relevant content type. - Network accessline 158
3. Point the endpoint at `https://your-site/xmlrpc/metaweblog`.
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Signal confidence: 500 facts
- Network access in code of the SKILL.mdcrestapps-core-a2a/SKILL.md:38High confidence
- Network access in code of the SKILL.mdcrestapps-core-a2a/SKILL.md:39High confidence
- Network access in code of the SKILL.mdcrestapps-core-a2a/SKILL.md:40High confidence
- Network access in code of the SKILL.mdcrestapps-core-a2a/SKILL.md:147High confidence
- Network access in code of the SKILL.mdcrestapps-core-a2a/SKILL.md:148High confidence
- Network access in code of the SKILL.mdcrestapps-core-a2a/SKILL.md:149High confidence
- Network access in code of the SKILL.mdcrestapps-core-azure-ai-inference/SKILL.md:53High confidence
- Network access in code of the SKILL.mdcrestapps-core-azure-ai-inference/SKILL.md:54High confidence
- Network access in code of the SKILL.mdcrestapps-core-azure-ai-inference/SKILL.md:55High confidence
- Network access in code of the SKILL.mdcrestapps-core-azure-ai-inference/SKILL.md:60High confidence
- Network access in code of the SKILL.mdcrestapps-core-azure-ai-inference/SKILL.md:61High confidence
- Network access in code of the SKILL.mdcrestapps-core-azure-ai-inference/SKILL.md:62High confidence
- Network access in code of the SKILL.mdcrestapps-core-azure-ai-search/SKILL.md:43High confidence
- Network access in code of the SKILL.mdcrestapps-core-azure-ai-search/SKILL.md:44High confidence
- Network access in code of the SKILL.mdcrestapps-core-azure-ai-search/SKILL.md:45High confidence
- Network access in code of the SKILL.mdcrestapps-core-azure-openai/SKILL.md:53High confidence
- Network access in code of the SKILL.mdcrestapps-core-azure-openai/SKILL.md:54High confidence
- Network access in code of the SKILL.mdcrestapps-core-azure-openai/SKILL.md:55High confidence
- Network access in code of the SKILL.mdcrestapps-core-azure-openai/SKILL.md:60High confidence
- Network access in code of the SKILL.mdcrestapps-core-azure-openai/SKILL.md:61High confidence
- Network access in code of the SKILL.mdcrestapps-core-azure-openai/SKILL.md:62High confidence
- Network access in code of the SKILL.mdcrestapps-core-azure-openai/SKILL.md:147High confidence
- Network access in code of the SKILL.mdcrestapps-core-azure-openai/SKILL.md:148High confidence
- Network access in code of the SKILL.mdcrestapps-core-azure-openai/SKILL.md:149High confidence
- Network access in code of the SKILL.mdcrestapps-core-azure-openai/SKILL.md:155High confidence
- Network access in code of the SKILL.mdcrestapps-core-azure-openai/SKILL.md:156High confidence
- Network access in code of the SKILL.mdcrestapps-core-azure-openai/SKILL.md:157High confidence
- Network access in code of the SKILL.mdcrestapps-core-chat-interactions/SKILL.md:148High confidence
- Network access in code of the SKILL.mdcrestapps-core-chat-interactions/SKILL.md:149High confidence
- Network access in code of the SKILL.mdcrestapps-core-chat-interactions/SKILL.md:151High confidence
- Network access in code of the SKILL.mdcrestapps-core-chat-interactions/SKILL.md:152High confidence
- Network access in code of the SKILL.mdcrestapps-core-chat-interactions/SKILL.md:153High confidence
- Network access in code of the SKILL.mdcrestapps-core-chat-interactions/SKILL.md:154High confidence
- Network access in code of the SKILL.mdcrestapps-core-chat-interactions/SKILL.md:155High confidence
- Network access in code of the SKILL.mdcrestapps-core-chat-interactions/SKILL.md:156High confidence
- Network access in code of the SKILL.mdcrestapps-core-chat-interactions/SKILL.md:157High confidence
- Network access in code of the SKILL.mdcrestapps-core-chat-interactions/SKILL.md:158High confidence
- Network access in code of the SKILL.mdcrestapps-core-chat-interactions/SKILL.md:159High confidence
- Network access in code of the SKILL.mdcrestapps-core-claude-orchestrator/SKILL.md:40High confidence
- Network access in code of the SKILL.mdcrestapps-core-claude-orchestrator/SKILL.md:41High confidence
- Network access in code of the SKILL.mdcrestapps-core-claude-orchestrator/SKILL.md:42High confidence
- Network access in code of the SKILL.mdcrestapps-core-copilot-orchestrator/SKILL.md:54High confidence
- Network access in code of the SKILL.mdcrestapps-core-copilot-orchestrator/SKILL.md:55High confidence
- Network access in code of the SKILL.mdcrestapps-core-copilot-orchestrator/SKILL.md:56High confidence
- Network access in code of the SKILL.mdcrestapps-core-document-agents/SKILL.md:41High confidence
- Network access in code of the SKILL.mdcrestapps-core-document-agents/SKILL.md:42High confidence
- Network access in code of the SKILL.mdcrestapps-core-document-agents/SKILL.md:43High confidence
- Network access in code of the SKILL.mdcrestapps-core-elasticsearch/SKILL.md:45High confidence
- Network access in code of the SKILL.mdcrestapps-core-elasticsearch/SKILL.md:46High confidence
- Network access in code of the SKILL.mdcrestapps-core-elasticsearch/SKILL.md:47High confidence
and 450 more
Only the first 500 facts are listed.
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Native | Manifest AGENTS.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md plugins/crestapps-core/skills/crestapps-core-a2a/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md plugins/crestapps-core/skills/crestapps-core-a2a/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Native | Manifest .github/copilot-instructions.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md plugins/crestapps-core/skills/crestapps-core-a2a/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.