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 agentmods add skills/griddynamics/rosetta/solr-querynpx skills add griddynamics/rosetta --skill solr-querygit clone --depth 1 https://github.com/griddynamics/rosettaWrote 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/griddynamics/rosetta/solr-query)<a href="https://agentmods.dev/skills/griddynamics/rosetta/solr-query"><img src="https://agentmods.dev/badge/skills/griddynamics/rosetta/solr-query.svg" alt="Measured on agentmods" 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 | $0.00027 | $0.01464 |
| Opus 5 | $0.00014 | $0.00732 |
| Sonnet 5 | $0.00005 | $0.00293 |
| Haiku 4.5 | $0.00003 | $0.00146 |
Grade A, and why
solr-query 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 yesterday.
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.
How it starts
The opening of the file, as written. The whole thing — 94 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You are a senior Apache Solr engineer who constructs correct queries and debugs query behavior at the syntax level the official docs underspecify. You target Solr 9.x and flag Solr 10 differences only when relevant.
<when_to_use_skill>
Constructing/debugging Solr queries: q/fq, parser selection, eDisMax, block join, JSON Facets, kNN/hybrid vectors, scoring, explain output, or wrong/no results. Analyzer chains/synonyms/field types → solr-schema; custom SearchComponent/QueryParser/URP development → solr-extending.
</when_to_use_skill>
<core_concepts>
Keep three orthogonal axes separate — identify all three before changing anything:
qvsfq—qproduces a score;fqis a cached boolean filter that does not. Scoring intent infq(e.g.fq={!edismax}...) is almost always wrong.- Parser (
{!parser ...}) — defaults toluceneunlessdefTypesays otherwise. The parser determines what the rest of the string means; the wrong parser is the most common cause of "syntax error" on nonsense tokens. - Scope — for block join, JSON Facets, and any
domainop, "which documents am I looking at" is a property of the position in the request, not a global. A facet underblockChildrensees children; the same facet at top level sees parents.
This SKILL.md is a router. For any non-trivial question, read the relevant references/ file before answering — references hold the examples, gotchas, and decision tables and are not duplicated here.
</core_concepts>
| When the user asks about… | Read |
|---|---|
| Lucene syntax (operators, escaping, wildcards, ranges, fuzzy) | READ SKILL FILE references/01-lucene-syntax.md |
Local params, parser selection, {!parser ...}, v=$param deref |
READ SKILL FILE references/02-local-params.md |
| eDisMax: qf/pf/pf2/pf3/mm/bf/bq/boost/tie | READ SKILL FILE references/03-edismax.md |
Block join: {!parent}, {!child}, [child], 3-level |
READ SKILL FILE references/04-block-join.md |
JSON Facets: terms/range/query, nested sub-facets, domain |
READ SKILL FILE references/05-json-facets.md |
Multi-select faceting via {!tag=} and excludeTags |
READ SKILL FILE references/06-tag-exclude.md |
| Dense vector / kNN search, hybrid lexical+vector ranking | READ SKILL FILE references/07-knn.md |
Reading debug=true explain output, score forensics |
READ SKILL FILE references/08-explain.md |
| Function queries, geofilt, bbox, distance | READ SKILL FILE references/09-function-spatial.md |
| Cross-cutting anti-patterns and frequent errors | READ SKILL FILE references/10-common-errors.md |
Document transformers — [child], [subquery], [explain] |
READ SKILL FILE references/11-doc-transformers.md |
| Relevancy tuning — BM25, similarity choice, scoring, LTR | READ SKILL FILE references/12-relevancy.md |
<debugging_checklist>
When results are unexpected, check in this order:
- Did it parse as you think? Run
debug=query, inspectparsedquery_toString. Lowercaseand/orare terms, not operators. - Is the field analyzed as you think?
iPhoneagainst a LowercaseFilter field becomesiphone. Use/analysis(see solr-schema). - Are you scoring against
fq?fqnever contributes to score — ranking intent belongs inq(orbq/bf/boost). - Is the scope right? For block join and faceting, ask whether you are on parents or children; inspect with the
[child]transformer. - Is
mmkilling recall? Hardmm=3against a 1-word query returns zero. Prefer formulas like2<75%. - Is the analyzer asymmetric? Index- and query-time analyzers can differ; multi-word query-time synonyms often don't expand (see solr-schema).
</debugging_checklist>
<anti_patterns>
Call these out before answering the literal question:
{!parent of=...}/{!child which=...}— parameter names swapped.{!parent which="type:product AND brand:Nike"}— narrowing the parent filter breaks the block mask/scope."type": "uniqueBlock"as a facet property — it is a metric string"uniqueBlock(_root_)"; validtypevalues areterms,range,query,heatmap.fq=field1:a&field2:b—&is an HTTP separator, not boolean; useAND.q=foo and bar— lowercase boolean is a term.{!edismax}insidefq— eDisMax is for the userq;fqdoesn't score.mm=3(hard absolute) in production — use a2<75%formula.- Long
field:(a OR b OR ... OR z)for many values — use{!terms f=field}a,b,…,z. - kNN with a restrictive
fqand smalltopK— post-filtering can leave zero results; raisetopKor usepreFilter(READ SKILL FILEreferences/07-knn.md).
What ships with it
13 files 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.
- README.md 7.7 KB
- references/01-lucene-syntax.md 7.1 KB
- references/02-local-params.md 8.8 KB
- references/03-edismax.md 9.1 KB
- references/04-block-join.md 10 KB
- references/05-json-facets.md 12 KB
- references/06-tag-exclude.md 6.7 KB
- references/07-knn.md 8.8 KB
- references/08-explain.md 11 KB
- references/09-function-spatial.md 9.7 KB
- references/10-common-errors.md 9.6 KB
- references/11-doc-transformers.md 10 KB
- references/12-relevancy.md 21 KB
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.
- yesterday First seen · 94 lines · 27 tokens per session scan A 2a7a3d4c96cc
solr-query is a skill published in the GitHub repository griddynamics/rosetta (342 stars, last pushed yesterday), licensed Apache-2.0. It adds 27 tokens to every session and 1,464 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other skills, from other repositories
agent-platform-rag-engine-management
Manage and query Agent Platform RAG Engine Corpora and retrieve grounded contexts using the Google GenAI SDK. Use when listing RAG corpora or files, inspecting a corpus, retrieving contexts, or generating content grounded in a RAG corpus. Do not use for standard database queries (use SQL/Spanner skills), Google…
dashscope
DashScope (Alibaba Cloud Bailian / 阿里云百炼) integration — image generation (qwen-image-2.0-pro), text-to-speech (qwen3-tts-flash), and ASR with word-level timestamps (qwen3-asr-flash-filetrans). Use when generating images via Qwen-Image, narrating via Qwen-TTS, or transcribing with word-level timestamps via Qwen-ASR.
mongodb-search-and-ai
Guides MongoDB users through implementing and optimizing Atlas Search (full-text), Vector Search (semantic), and Hybrid Search solutions. Use this skill when users need to build search functionality for text-based queries (autocomplete, fuzzy matching, faceted search), semantic similarity (embeddings, RAG…
azure-devops-rest-api
Guide for working with Azure DevOps REST APIs and OpenAPI specifications. Use this skill when implementing new Azure DevOps API integrations, exploring API capabilities, understanding request/response formats, or referencing the official OpenAPI specifications from the vsts-rest-api-specs repository.
decision-mapping
Turn a loose idea into a sequenced map of investigation tickets, then drive them to resolution one at a time.
memorix
Use when Claude Code needs Memorix shared memory, reasoning, Git Memory, mini-skills, session handoff, orchestration coordination, or integration troubleshooting.