Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add CrestApps/CrestApps.AgentSkills --skill orchardcore-display-managementgit clone --depth 1 https://github.com/CrestApps/CrestApps.AgentSkillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/crestapps/crestapps.agentskills/orchardcore-display-management)<a href="https://agentmods.dev/skills/crestapps/crestapps.agentskills/orchardcore-display-management"><img src="https://agentmods.dev/badge/skills/crestapps/crestapps.agentskills/orchardcore-display-management/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/crestapps/crestapps.agentskills/orchardcore-display-management"><img src="https://agentmods.dev/badge/skills/crestapps/crestapps.agentskills/orchardcore-display-management.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00195 | $0.06338 |
| Opus 5.5 | $0.00078 | $0.02535 |
| Sonnet 5.5 | $0.00039 | $0.01268 |
| Haiku 4.5 | $0.00019 | $0.00634 |
Grade A, and why
orchardcore-display-management scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
This is a copy
86% identical to loading-openmed-models — 669 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 587 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Orchard Core Display Management - Prompt Templates
Mental Model
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, andUpdateAsyncreturnIDisplayResults, each with a default.Location(...)per display type. - Placement:
placement.jsonat 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?
| Want to... | Use |
|---|---|
| Reposition or hide a shape someone else built | placement.json |
| Move a shape to a layout zone | placement.json (place starting with /) |
| Swap the template, add alternates or wrappers | placement.json (shape, alternates, wrappers) or a shape table provider |
| Lay out an admin editor in tabs, cards, columns | placement.json groupings or the driver's .Location(...) |
| Produce a new shape from your part, field, or model | A display driver |
| Read and validate posted editor values | A display driver (UpdateAsync) |
Prefer placement for layout; a theme can override it without recompiling the module. See orchardcore-placement.
Create Display Drivers and Shapes
You are an Orchard Core expert. Generate display drivers, shapes, and display management code for Orchard Core.
Guidelines
-
Every content part that needs custom rendering requires a
DisplayDriver. -
Pick the base class by model:
Base class Contexts (Display / Edit / Update) For ContentPartDisplayDriver<TPart>BuildPartDisplayContext/BuildPartEditorContext/UpdatePartEditorContextA content part ContentFieldDisplayDriver<TField>BuildFieldDisplayContext/BuildFieldEditorContext/UpdateFieldEditorContextA content field SiteDisplayDriver<TSettings>BuildDisplayContext/BuildEditorContext/UpdateEditorContextA site settings group ( SettingsGroupId)SectionDisplayDriver<TModel, TSection>Same as DisplayDriverA section (named property) of any IEntity, such as user settingsDisplayDriver<TModel>BuildDisplayContext/BuildEditorContext/UpdateEditorContextAny other model -
Drivers handle three operations:
Display,Edit, andUpdate(sync or...Asyncvariants). -
Each operation returns
IDisplayResult(shapes to render).ShapeResultresolves placement first and only creates the shape when it is actually displayed. -
View models are used to pass data between drivers and views.
-
Shape names follow the convention
{PartName}for display and{PartName}_Editfor editor. -
Use
Initialize<TModel>to create shapes with a view model. UseFactory()when you build theIShapeyourself. Never use the obsoleteShape()method (see Upgrading from 3.x). -
Prefer
staticlambdas with the typed-state overloads on hot paths (drivers that run for every content item in a list) to avoid closure allocations. -
Register drivers in
Startup.csusingservices.AddContentPart<TPart>().UseDisplayDriver<TDriver>(). -
For non-content-item models rendered through
DisplayDriver<TModel>, the root shape still needs its own wrapper template for each display type you build (for example,CampaignAction.Edit.cshtmlforCampaignAction_EditandCampaignAction.SummaryAdmin.cshtmlforCampaignAction_SummaryAdmin). -
When driver results are placed into zones with
.Location("Content:1"),.Location("Actions:5"), or similar, the wrapper template must render those zones (Model.Content,Model.Actions,Model.Meta, etc.) or the child shapes will never appear. -
For ALL admin editor views (
*.Edit.cshtmlincluding*Settings.Edit.cshtml), use theocat-*(Orchard Core Admin Theme) CSS classes instead of rawmb-3,form-label, or hard-coded grid classes. Useocat-wrapperfor the outer row,ocat-labelfor labels,ocat-endfor the input column,ocat-end-offsetfor checkbox-only rows/headings/buttons with no left label,ocat-limited-wrapper+ocat-limitedfor narrow-width fields. Do NOT apply these classes to frontend views (Login, Register, etc.) or Admin Menu node editing (needs full width). -
The former
@Orchard.GetWrapperClasses(),@Orchard.GetLabelClasses(),@Orchard.GetEndClasses()helper methods andTheAdminThemeOptionsclass have been removed. Use the staticocat-*CSS classes directly. -
Always seal classes.
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago Changed · +97 lines · +12 tokens per session 9825cc46f005
- 3d ago Changed · +180 lines · -12 tokens per session 11820c5adf69
- 1mo ago First seen · 310 lines · 195 tokens per session scan A 56892a93900c
orchardcore-display-management is a skill published in the GitHub repository CrestApps/CrestApps.AgentSkills (13 stars, last pushed 2d ago), licensed MIT. It adds 195 tokens to every session and 6,338 once invoked, about $0.0008 per session on Opus 5.5. A static security scan graded it A with 0 findings. It is 86% identical to loading-openmed-models, differing in 669 lines, and is treated as a copy.
Other skills, from other repositories
powerpoint-deck-design
Plan or improve the visual design of a PowerPoint presentation: layout, typography, color, hierarchy, accessibility, and consistency. Use when the user asks to create, redesign, or review how a deck looks; not for general PowerPoint automation or content-only edits.
qcad-cad
AI-driven 2D CAD with qcad-mcp — DXF/DWG floor plans, SVG preview, STL extrusion, room analysis, QCAD Pro ECMAScript bridge.
episteme-advisor
Use this agent when the user faces an engineering decision, trade-off, or architecture question — choosing between patterns, resolving design conflicts, or applying refactorings. Grounds every recommendation in the Episteme knowledge graph.
release-notes
Writes user-facing release notes from a git commit range. Use when asked to draft release notes, a changelog entry, or "what's new" text for a release.
rhinocommon-geometry
Deep reference for Rhino.Geometry namespace — all geometry types, operations, and patterns in RhinoCommon. Use this skill whenever working with Rhino geometry in C# or Python: Point3d, Vector3d, Curve, Surface, Brep, Mesh, NURBS, intersections, boolean operations, transforms, planes, bounding boxes. Triggers on…
atelier
Two-agent post-generation quality gate for vibe-coded applications. Deterministic, gradeable ruleset enforcing UI/UX design-system craft and backend architectural soundness.