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-semantic-searchnpx skills add griddynamics/rosetta --skill solr-semantic-searchgit 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-semantic-search)<a href="https://agentmods.dev/skills/griddynamics/rosetta/solr-semantic-search"><img src="https://agentmods.dev/badge/skills/griddynamics/rosetta/solr-semantic-search.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.00024 | $0.01764 |
| Opus 5 | $0.00012 | $0.00882 |
| Sonnet 5 | $0.00005 | $0.00353 |
| Haiku 4.5 | $0.00002 | $0.00176 |
Grade A, and why
solr-semantic-search 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 — 116 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 designs, builds, debugs, and extends phrase-tagging semantic search on Solr 9.x: decomposing natural-language queries into structured concepts via dictionary lookup, resolving path ambiguity in a tag graph, and assembling precise multi-field Solr queries. This is lexical, not vector/embedding, semantic search.
<when_to_use_skill>
Concept tagging, query understanding, taxonomy-driven search, structured Brand/Line/Model recognition, shingle-based matching, multi-word synonyms, path resolution, fuzzy-phrase-to-structured-query extraction. Traditional Solr query work and vector/kNN semantic search → solr-query skill. Custom plugins this architecture relies on → solr-extending skill.
</when_to_use_skill>
<core_concepts>
Three independently testable layers, separated by stable interfaces (ProducedTag, StagedTag, SmQuery):
- Tagging — phrase → analyzed tokens → shingles (1..N) → lookup in the concept index →
ProducedTaglist (token, position, type, matched fields+weights). - Graph — tags become edges, positions become vertices; find K-shortest paths (= valid phrase interpretations) and resolve ambiguity by dropping weak alternatives.
- Query building — for each viable path, build an abstract
Smquery, apply dependency groups and min-should-match, then translate to a Solr query against the catalog.
This SKILL.md is a router. For any non-trivial question, read the relevant references/ file before answering — references hold the examples, schemas, code, and decision tables and are not duplicated here.
</core_concepts>
| When the user asks about… | Read |
|---|---|
| Architecture overview, the three layers, data flow | READ SKILL FILE references/01-architecture.md |
| Concept collection schema, building it from source data, indexing handler | READ SKILL FILE references/02-concept-indexing.md |
| Phrase tagging mechanics: shingles, lookup, scoring, multi-language, fuzzy/word-break/prefix | READ SKILL FILE references/03-tagging.md |
| Graph construction (JGraphT), vertices/edges, paths, quasi-positions for multi-word syns | READ SKILL FILE references/04-graph-paths.md |
| Ambiguity resolution between competing interpretations (Path vs Shingle resolvers) | READ SKILL FILE references/05-ambiguity-resolution.md |
| Building the final Solr query from tagged paths, Sm query model, dependency groups | READ SKILL FILE references/06-query-building.md |
| Adapting this to a new domain: schema design, concept sources, stages config | READ SKILL FILE references/07-applying-to-domain.md |
| Sm* query model implementation — full code for SmQuery/SmBoolean/SmTerm and the Solr translator fabric | READ SKILL FILE references/08-query-model-implementation.md |
<when_to_choose>
This is a heavyweight architecture. It is the right tool when the domain has well-defined concepts (products, models, attributes) with known synonyms, queries must be understood structurally ("what is the Brand? Line? attribute?"), vector search yields too many false positives for the required precision, and authoritative taxonomies exist to extract concepts from.
It is the wrong tool when the domain is open-ended natural language (use embeddings), there are no curated concept dictionaries, or only fuzzy retrieval is needed without structural understanding.
</when_to_choose>
<mental_model>
USER PHRASE: "sony wh-1000xm5 ear pads"
──► LAYER 1 TAGGING: tokens → shingles → concept-index lookup → ProducedTag list
──► LAYER 2 GRAPH: tags→edges, positions→vertices; K-shortest paths; resolve ambiguity
──► LAYER 3 QUERY BUILDING: per path build Sm query, dependency groups, min-should-match → Solr query
──► SOLR SEARCH against the catalog ──► RESULTS
Why it beats naive eDisMax, three problems:
- Ambiguous tokens — "air" may be a Model (MacBook Air, weight 100) or description text (weight 1). The tagger emits both tags; the path resolver picks the higher-weight interpretation instead of letting scores compete across
qf. - Multi-word concepts — "ear pads" is two tokens but one category. As a multi-word synonym it produces a single
MULTI_SYNtag spanning both positions, preserving the structure eDisMaxpfloses. - Domain rules — "sony wh-1000xm5" must validate that Sony's WH line includes the 1000XM5 model. A BLM post-processor (e.g.
BrandLineModelProcessor) checks recognized Brand/Line/Model tags against a canonicalCatalogProvider, drops invalid combos, and turns valid ones into structured filters (brand_id_s:SONY AND line_id_s:WH AND model_id_s:WH-1000XM5).
What ships with it
9 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.0 KB
- references/01-architecture.md 13 KB
- references/02-concept-indexing.md 13 KB
- references/03-tagging.md 25 KB
- references/04-graph-paths.md 13 KB
- references/05-ambiguity-resolution.md 13 KB
- references/06-query-building.md 20 KB
- references/07-applying-to-domain.md 28 KB
- references/08-query-model-implementation.md 43 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 · 116 lines · 24 tokens per session scan A 99b44adcba28
solr-semantic-search is a skill published in the GitHub repository griddynamics/rosetta (342 stars, last pushed yesterday), licensed Apache-2.0. It adds 24 tokens to every session and 1,764 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
setup
Configure the Qdrant Power after installation. Use this skill for missing uvx, missing environment variables, unapproved environment variables, unavailable Qdrant tools, "Failed to connect" errors, and setup requests.
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…
pinecone-quickstart
Interactive Pinecone quickstart for new developers. Choose between two paths - Database (create an integrated index, upsert data, and query using Pinecone MCP + Python) or Assistant (create a Pinecone Assistant for document Q&A). Use when a user wants to get started with Pinecone for the first time or wants a guided…
pinecone-cli
Guide for using the Pinecone CLI (pc) to manage Pinecone resources from the terminal. The CLI supports ALL index types (standard, integrated, sparse) and all vector operations — unlike the MCP which only supports integrated indexes. Use for batch operations, vector management, backups, namespaces, CI/CD automation…
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.