CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

orchardcore-query-indexing

Works with OrchardCore queries and indexing — SQL/Lucene/Elasticsearch queries, full-text index profiles, content part/field index handlers, and search. Use when the user needs to define a query, index content for search, write an index handler, register an indexing source, or add query/index recipe steps.

67

Quality

84%

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

68%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-organized, dense body with strong code examples and useful boundary disambiguation between the query and indexing systems. The main gaps are the absence of validation/verification steps for batch and destructive index operations (rebuild, reset) and slightly generic registration code.

Suggestions

Add a validation step to Workflow B after registration/rebuild — e.g. check the index with IIndexManager.ExistsAsync or run a smoke ISearchService.SearchAsync query to confirm documents landed before declaring success.

Replace the generic AddIndexingSource<TIndexManager, ...> placeholder with one concrete, copy-paste registration example for a real provider.

State the index-profile/MapIndex distinction once (the decision table) and drop the repeats in the intro and Gotchas to recover tokens.

DimensionReasoningScore

Conciseness

The body is lean — dense tables, copy-oriented code, no explanation of what OrchardCore or Lucene is. Not 5 because the MapIndex-vs-index-profile distinction is stated three times (intro, "Decide what you need" table, Gotchas) and the execution example spells out a trivial foreach loop; efficient overall with minor trimmable redundancy.

4 / 5

Actionability

Mostly executable: complete recipe JSON, a full `AliasPartIndexHandler` implementation, concrete DI registrations, and an API member table. Not 5 because the "Register an indexing source" snippet is generic placeholder code — `AddIndexingSource<TIndexManager, TDocumentIndexManager, TIndexNameProvider>(providerName, implementationType)` and `AddLuceneIndexingSource(implementationType)` are signatures, not a runnable example.

4 / 5

Workflow Clarity

Both workflows are clearly sequenced (pick source → create → execute; profile → handler → register → reset/rebuild), but there are no validation checkpoints anywhere — no verify-index-exists, no post-rebuild smoke query, no handling for a failed indexing task. Because indexing is a batch operation and `RebuildIndex` explicitly drops the index (destructive), the missing-validation cap of 3 applies.

3 / 5

Progressive Disclosure

Good structure: overview, decision table, two workflows, quick reference, gotchas, and a clear References section pointing to the real one-level-deep `references/indexing.md` (verified present). Not 5 because the inline Quick Reference API tables and repo-doc paths could be consolidated into the reference file — a minor organization gap rather than the ideal overview-plus-anchors split.

4 / 5

Total

15

/

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, concise, and specific, with an explicit multi-trigger "Use when" clause covering the full capability set. The only weakness is slightly incomplete natural-language trigger coverage (no "make content searchable"-style phrasing or Azure AI Search mention).

DimensionReasoningScore

Specificity

"define a query, index content for search, write an index handler, register an indexing source, or add query/index recipe steps" lists multiple concrete actions with comprehensive coverage of the skill's domain (queries, profiles, handlers, registration, recipe steps, search). Not level 4 because there are no meaningful coverage gaps — every capability named is a specific, discrete action.

5 / 5

Completeness

Explicitly answers both: what ("SQL/Lucene/Elasticsearch queries, full-text index profiles, content part/field index handlers, and search") and when ("Use when the user needs to define a query, index content for search, write an index handler, register an indexing source, or add query/index recipe steps") with concrete trigger phrases. Matches the anchor-5 example structure exactly.

5 / 5

Trigger Term Quality

Good natural-term coverage: "define a query", "index content", "search", "index handler", "recipe steps", plus SQL/Lucene/Elasticsearch. Not 5 because a few natural phrasings users would actually say are missing (e.g. "make content searchable", "full-text search" as a trigger, "Azure AI Search"); clearly above the midpoint, so 4 rather than 3 or 5.

4 / 5

Distinctiveness Conflict Risk

Scopes tightly to "OrchardCore queries and indexing" with provider-specific terms (Lucene, Elasticsearch, index handlers, index profiles) forming a clear niche unlikely to fire for unrelated skills. Not lower: the domain qualifier plus concrete triggers give it minimal overlap risk.

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-query-indexing/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.