CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

orchardcore-tenants

Works with OrchardCore multi-tenancy — shells, ShellSettings, creating/configuring tenants programmatically, running code in a tenant scope, feature profiles, and data isolation. Use when the user needs to create or manage tenants, run code inside a tenant, pre-configure tenants, or understand shell lifecycle.

72

Quality

90%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

82%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A well-structured, highly actionable skill body: complete executable examples for creating tenants, running scoped code, and pre-configuring via config, with good decision routing and a real one-level-deep reference file. The main weaknesses are moderate duplication between the body and references/shells.md and the absence of explicit validation checkpoints in the workflows.

Suggestions

Deduplicate the body against references/shells.md: keep one canonical version of the create-tenant snippet, tenant-state list, and data-isolation matrix (e.g., leave the annotated deep-dive in shells.md and keep only the minimal workflow form in SKILL.md), trimming tokens and sharpening the overview/reference split.

Add a validation checkpoint to Workflow A, e.g. after UpdateShellSettingsAsync confirm the tenant appears with State 'Uninitialized' (via ListShellContexts()/TryGetSettings) before moving on, and note what to do if the shell fails to build (Invalid state).

Reduce the Quick Reference section's overlap with shells.md — move the IShellHost member table and settings-key bag fully into the reference file and keep only the Decide-what-you're-doing routing table inline.

DimensionReasoningScore

Conciseness

The body is dense — tables, copy-paste code, and only project-specific facts — but the create-tenant snippet, data-isolation matrix, feature-profile section, and tenant-state list are all duplicated between SKILL.md and references/shells.md, which is trimmable token overhead. This is 'efficient with minor instances that could be trimmed' rather than every-token-earns-its-place.

4 / 5

Actionability

Workflows A, B, and C each carry complete, copy-paste-ready C#/JSON (CreateDefaultSettings().AsUninitialized().AsDisposable() chain, GetScopeAsync + UsingAsync, appsettings tenant declaration), plus a concrete API alternative (POST /api/tenants/create then /api/tenants/setup). The common cases are each covered by a fully executable example; the DI-field idiom and the setup-parameter pointer (fully specified one level deep in references/shells.md) are not execution gaps.

5 / 5

Workflow Clarity

A routing table ('Decide what you're doing') plus three clearly sequenced workflows with stated postconditions ('The tenant is now Uninitialized — it still needs setup') and a Gotchas section. However, there are no explicit validation checkpoints or error-recovery loops (e.g., verify the tenant's state or listing after UpdateShellSettingsAsync), which is the 'most checkpoints present, minor validation gaps' anchor rather than the explicit-validation anchor.

4 / 5

Progressive Disclosure

A clearly signaled one-level-deep reference (references/shells.md, verified to exist and not nest further) with a content description, and repo-doc pointers. But the body's Quick Reference overlaps noticeably with shells.md (IShellHost members, state extensions, isolation matrix, settings keys appear in both), slightly blurring what belongs in the overview versus the reference file.

4 / 5

Total

17

/

20

Passed

Description

92%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A strong description: third person, concrete capability list including actual API type names, and an explicit 'Use when' clause with natural trigger phrases. The only improvement space is broader synonym coverage (e.g., tenant setup, multi-tenant sites).

DimensionReasoningScore

Specificity

Lists multiple concrete actions — "creating/configuring tenants programmatically", "running code in a tenant scope", "feature profiles, and data isolation" — anchored by concrete type names (shells, ShellSettings), giving comprehensive coverage of the skill's capabilities with no meaningful gaps.

5 / 5

Completeness

Explicitly answers both: what ("Works with OrchardCore multi-tenancy — shells, ShellSettings, creating/configuring tenants programmatically...") and when ("Use when the user needs to create or manage tenants, run code inside a tenant, pre-configure tenants, or understand shell lifecycle") with concrete trigger phrases.

5 / 5

Trigger Term Quality

Natural domain terms are well covered ("multi-tenancy", "tenants", "create or manage tenants", "run code inside a tenant", "shell lifecycle") — exactly what a user working in this framework would say. A few natural variants like "tenant setup" or "multi-tenant site" are missing, keeping it below the comprehensive-coverage anchor.

4 / 5

Distinctiveness Conflict Risk

"OrchardCore multi-tenancy" names a clear niche with distinct triggers (tenants, shells, tenant scope); other skills would virtually never collide with these triggers.

5 / 5

Total

19

/

20

Passed

Validation

100%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository

OrchardCMS/OrchardCore

Path

.agents/skills/orchardcore-tenants/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.