Agent skill

Solr Extending

by griddynamics in griddynamics/rosetta

To build Solr plugins: SearchComponent, QParser, URP, DocTransformer.

Apache-2.0Auto-check passed

Install Solr Extending

skills CLI
$ npx skills add griddynamics/rosetta --skill solr-extending -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install griddynamics/rosetta solr-extending --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/griddynamics/rosetta.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/core-claude/skills/solr-extending .claude/skills/solr-extending && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
solr-extending
GitHub stars
353
Token cost
~2k tokens
SKILL.md length
807 words
Files
8 (incl. references)
Skills in repo
12
Repo updated
First seen
Licence
Apache-2.0

At a glance

To build Solr plugins: SearchComponent, QParser, URP, DocTransformer.

  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Solr Extending is an agent skill from griddynamics/rosetta. To build Solr plugins: SearchComponent, QParser, URP, DocTransformer.

Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including reference files (for example `README.md`, `references/01-search-component.md` and `references/02-doc-transformer.md`).

The repository describes itself as: An instruction layer for AI coding agent. The licence is Apache-2.0.

Example prompts

  • “/solr-extending”

What it can do on your machine

Read from SKILL.md and the folder at commit 5441232. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are xml).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Solr Extending loads about 2k tokens when it runs, and up to ~22k if it reads all its reference files. Until then it costs about 21 tokens; SKILL.md has 807 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~21
When it runs · the whole SKILL.md, loaded when a task matches
~2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~22k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from griddynamics/rosetta at commit 5441232, republished under its Apache-2.0 licence (© griddynamics). 807 words, ~2,027 tokens.

Download SKILL.mdSave it as .claude/skills/solr-extending/SKILL.md (or your agent's skills folder). This skill also uses 7 other files; get the full folder from GitHub.
name
solr-extending
description
To build Solr plugins: SearchComponent, QParser, URP, DocTransformer.
license
Apache-2.0
tags
solr, plugins, java, extending
baseSchema
docs/schemas/skill.md
<solr-extending>
<role>

You are a senior Apache Solr engineer who builds production-grade custom plugins. You know the request and indexing lifecycles, distributed-mode (SolrCloud) correctness, registration in solrconfig.xml, and classloader/version traps. You target Solr 9.x and flag Solr 10 differences only when relevant.

</role>

<when_to_use_skill>

Custom Solr plugins: SearchComponent, DocTransformer/TransformerFactory, QParser/QParserPlugin, UpdateRequestProcessor (URP), ValueSourceParser/function queries, RequestHandlerBase subclasses, plugin jar packaging, solrconfig.xml wiring. Query construction (eDisMax, block join, JSON Facets) or relevancy tuning (BM25, boosts) → USE SKILL solr-query; custom analyzers/tokenizers/filters → USE SKILL solr-schema.

</when_to_use_skill>

<core_concepts>

A Solr request flows through pluggable layers; picking the right extension point depends on when in the lifecycle you need to act:

  • Query path: RequestHandler → SearchHandler → components (QueryComponent → QParser/QParserPlugin for custom syntax; FacetComponent, HighlightComponent, DebugComponent, custom SearchComponents) → response applies DocTransformers per doc.
  • Indexing path: UpdateRequestHandler → UpdateRequestProcessorChain (custom URPs) → DistributedUpdateProcessor (SolrCloud) → RunUpdateProcessor (writes to Lucene).

Most plugins come in factory + instance pairs: the factory is registered once in solrconfig.xml, configured via init params, and creates a fresh instance per request. Solr reuses instances across threads — instance state must be immutable after init, thread-local, or synchronized.

This SKILL.md is a router. For any non-trivial question, read the relevant references/ file before answering — references hold the full examples, lifecycle details, and decision tables and are not duplicated here.

</core_concepts>

<references>
When the user asks about…Read
SearchComponent lifecycle (prepare/process), distributed mode, registrationREAD SKILL FILE references/01-search-component.md
DocTransformer / TransformerFactory — per-doc augmentation, examplesREAD SKILL FILE references/02-doc-transformer.md
QParser / QParserPlugin — custom query syntaxREAD SKILL FILE references/03-query-parser.md
UpdateRequestProcessor (URP) — indexing-time transformationsREAD SKILL FILE references/04-update-processor.md
ValueSourceParser — custom function queries for bf=/sort=READ SKILL FILE references/05-value-source-parser.md
solrconfig.xml wiring, jar packaging, classloading, version compatREAD SKILL FILE references/06-plugin-wiring.md
</references>

<picking_the_extension_point>

You want to...Use
Add a request param that modifies how queries are processedSearchComponent
Add per-document fields to results (computed, fetched, formatted)DocTransformer
Support a new query syntax ({!myparser ...})QParser
Compute something from doc fields usable in bf= / sort=ValueSourceParser
Modify documents during indexing (clean fields, derive values, dedupe)UpdateRequestProcessor
Wholly new request endpoint with custom outputRequestHandlerBase subclass
Custom analyzer/tokenizer/filter(USE SKILL solr-schema)

The most common mistake is SearchComponent vs DocTransformer confusion:

  • DocTransformer runs per result doc — cheap for 10 docs, expensive for 1000+. Use it to enrich every result doc with data from another source.
  • SearchComponent runs once per request — can pre/post-process the entire response. Use it to filter/reorder/deduplicate the result set, or to inject into facet processing.

</picking_the_extension_point>

<lifecycle_hooks>

MethodCalled when
init(NamedList args)Once at factory load; configure from solrconfig.xml params
inform(SolrCore core) (if SolrCoreAware)Once after core fully loaded; safe to access schema, other components
prepare(...)Per-request setup (SearchComponent only)
process(...)Main work (SearchComponent)
transform(SolrDocument, int)Per-doc work (DocTransformer)
getQuery() / parse()Build Lucene Query (QParser)
processAdd/Delete/CommitPer-doc indexing (URP)
close()Resource cleanup

</lifecycle_hooks>

<anti_patterns>

Push back on these before answering the literal question:

  • DocTransformer doing batched fetches — transform() is per-doc; batching accumulates state across docs and breaks parallel response writers. Pre-fetch in a SearchComponent process(), then look up in the DocTransformer.
  • SearchComponent for per-doc enrichment — you must walk the DocList yourself; easy to break sorting/highlighting. DocTransformer is the right tool.
  • QParser accepting arbitrary unescaped user input — injection risk. Parse via SolrParams, validate field names against the schema.
  • URP that throws on bad input — one bad doc kills bulk indexing. Tolerate gracefully or apply IgnoreCommitOptimizeUpdateProcessorFactory semantics.
  • SearchComponent not overriding distributedProcess() — works standalone, breaks silently in SolrCloud (READ SKILL FILE references/01-search-component.md).
  • Plugin jar via <lib> directive in modern Solr — deprecated; use Solr packages or the sharedLib directory.
  • Plugin with mutable instance state — instances are reused across threads.
Show full SKILL.md (221 more words)Show less

</anti_patterns>

<distributed_considerations>

Most plugins work standalone but fail subtly under SolrCloud:

  • SearchComponent: process() runs per shard; cross-shard aggregation requires distributedProcess() / handleResponses() and shard stages. Pure per-doc-result components work without override.
  • DocTransformer: runs on the node assembling the final merged response, not per shard. Per-shard state needs a SearchComponent partner.
  • QParser: runs per shard; the parsed Query must be serializable/deterministic so shards agree.
  • URP: runs at multiple stages — preprocessor on the receiving node, then leader, then replicas via RunUpdateProcessor. Idempotency matters; custom URPs go before DistributedUpdateProcessor (preprocessing) or after (replica-side).

Always test in a 2+ shard SolrCloud setup before declaring done.

</distributed_considerations>

<plugin_shapes>

Base classes (most come as factory + instance pairs): SearchComponent, DocTransformer + TransformerFactory, QParser + QParserPlugin, UpdateRequestProcessor + UpdateRequestProcessorFactory, ValueSourceParser, RequestHandlerBase.

SearchComponent — override prepare/process/getDescription; register and add to last-components:

xml
<searchComponent name="myComp" class="com.example.MyComponent"/>
<requestHandler name="/select" class="solr.SearchHandler">
  <arr name="last-components"><str>myComp</str></arr>
</requestHandler>

DocTransformer — factory create(...) returns the per-doc transformer; register <transformer name="myTransform" class="com.example.MyTransformerFactory"/> and use fl=*,result:[myTransform arg=foo].

QParser — plugin createParser(...) returns a QParser whose parse() builds the Lucene Query; register <queryParser name="myparser" class="com.example.MyQParserPlugin"/> and use q={!myparser foo=bar}query body.

See references/ for fully-formed examples.

</plugin_shapes>

<solr_10_deltas>

Most plugin APIs are unchanged in Solr 10. Notable: some deprecated factory methods removed; solr.xml <lib> directive support changes (packages-first); HTTP/2 client changes affect components making inter-shard calls; some org.apache.solr.handler.component.* internals refactored. Default to Solr 9.x answers; mention Solr 10 only when the user is on it or asks.

</solr_10_deltas>

</solr-extending>

© griddynamics, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 7 other files (references) in plugins/core-claude/skills/solr-extending of griddynamics/rosetta.

  • SKILL.md
  • README.md
  • references/01-search-component.md
  • references/02-doc-transformer.md
  • references/03-query-parser.md
  • references/04-update-processor.md
  • references/05-value-source-parser.md
  • references/06-plugin-wiring.md

Open the folder on GitHubat commit 5441232

Compare with similar skills

Solr Extending next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Solr Extending compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Solr Extending this skillgriddynamics/rosetta353—~2kAutomated safety check: PassApache-2.0
Extend Commands APIredis/jedis12k—~7.2kAutomated safety check: WarnMIT
Extend Commands APIredis/lettuce5.8k—~7.7kAutomated safety check: NotesMIT
Unity UrpBesty0728/Unity-Skills1.8k—~863Automated safety check: PassMIT
Video Extendartokun/comfyui-mcp793—~6.4kAutomated safety check: PassMIT
Lathe Extenddevenjarvis/lathe1.7k—~1.4kAutomated safety check: PassMIT

Similar skills

  • Official

    Add or extend Redis commands in the Jedis client API — a new core command, a family of new commands, an extension to an existing command's options, or a module command (Search/TimeSeries/JSON/Bloom).

    12k GitHub stars~7.2k tokensUpdated today
    DatabasesAuto-check: warnings
  • Extend Commands API

    redis/lettuce

    Official

    Add or extend Redis commands in the Lettuce client API end-to-end — a new core command, a family of new commands, an extension to an existing command's options, or a module/area command…

    5.8k GitHub stars~7.7k tokensUpdated yesterday
    DatabasesAuto-check: notes
  • Unity Urp

    Besty0728/Unity-Skills

    Manage the Universal Render Pipeline (URP). An agent skill from Besty0728/Unity-Skills.

    1.8k GitHub stars~863 tokensUpdated yesterday
    Game DevelopmentAuto-check passed
  • Video Extend

    artokun/comfyui-mcp

    Extend / continue a video temporally with Pusa 2.2 in ComfyUI.

    793 GitHub stars~6.4k tokensUpdated 2 days ago
    AI & LLM EngineeringAuto-check passed
  • Lathe Extend

    devenjarvis/lathe

    Write the next part of an existing Lathe tutorial, in session.

    1.7k GitHub stars~1.4k tokensUpdated 2 mo ago
    Auto-check passed
  • Pb Extend

    spinspire/pocketbase-sveltekit-starter

    Extend PocketBase with custom hooks and routes in JS or Go. An agent skill from spinspire/pocketbase-sveltekit-starter.

    511 GitHub stars~689 tokensUpdated 1 mo ago
    Backend & APIsAuto-check: notes

More from griddynamics/rosetta

All 12 skills in this repo
  • Collect GitHub Stats

    griddynamics/rosetta

    Collect GitHub repo health/usage stats into merged JSON. An agent skill from griddynamics/rosetta.

    353 GitHub stars~415 tokensUpdated 8 days ago
    Auto-check passed
  • External Lib Flow

    griddynamics/rosetta

    Workflow for onboarding an external private library so AI can use it without source access.

    353 GitHub stars~1.5k tokensUpdated 8 days ago
    Auto-check passed
  • Specflow Use

    griddynamics/rosetta

    To connect Rosetta with Grid Dynamics SpecFlow MCP; only when SpecFlow is mentioned and the MCP is installed.

    353 GitHub stars~780 tokensUpdated 8 days ago
    Auto-check passed
  • Harness

    griddynamics/rosetta

    To build an AI harness: run, observe, validate, automate repeated work faster — CLI/MCP actions, devcontainers, skills, subagents, hooks, pipelines, automations.

    353 GitHub stars~1.5k tokensUpdated 8 days ago
    Auto-check passed
  • Coding Agents Farm

    griddynamics/rosetta

    To orchestrate parallel coding-agent farms (Claude, Codex, Copilot, Gemini, etc.) on isolated git worktrees.

    353 GitHub stars~2.4k tokensUpdated 8 days ago
    Auto-check passed
  • Coding Agents Hooks Authoring

    griddynamics/rosetta

    To author, register, and test Rosetta hooks, add a SemanticKind, or debug a hook that won't fire.

    353 GitHub stars~1.4k tokensUpdated 8 days ago
    Auto-check passed

Questions about Solr Extending

What does Solr Extending do?

To build Solr plugins: SearchComponent, QParser, URP, DocTransformer. Solr Extending is an agent skill from griddynamics/rosetta. To build Solr plugins: SearchComponent, QParser, URP, DocTransformer.

How do I install Solr Extending in Claude Code?

Run `npx skills add griddynamics/rosetta --skill solr-extending -a claude-code`. Or copy the skill folder (plugins/core-claude/skills/solr-extending in griddynamics/rosetta) into .claude/skills/solr-extending in your project. Claude Code loads it when a task matches its description.

How do I install Solr Extending in Codex?

Run `npx skills add griddynamics/rosetta --skill solr-extending -a codex`. Or copy the skill folder (plugins/core-claude/skills/solr-extending in griddynamics/rosetta) into .agents/skills/solr-extending in your project. Codex loads it when a task matches its description.

Can I use Solr Extending in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add griddynamics/rosetta --skill solr-extending -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/solr-extending, .gemini/skills/solr-extending, .github/skills/solr-extending and .opencode/skills/solr-extending in your project.

What does Solr Extending need to run?

SKILL.md names no scripts, command-line tools or credentials: Solr Extending is instructions for the agent only.

Does Solr Extending access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Solr Extending safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Solr Extending use?

Solr Extending is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Solr Extending use?

About 2k tokens (SKILL.md is roughly 8.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 20k tokens, read only when the agent opens those files.

What are the alternatives to Solr Extending?

Skills that share tags, products or a category with Solr Extending: Extend Commands API (redis/jedis, 12k stars), Extend Commands API (redis/lettuce, 5.8k stars), Unity Urp (Besty0728/Unity-Skills, 1.8k stars) and Video Extend (artokun/comfyui-mcp, 793 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Solr Extending?

griddynamics (a GitHub organization) maintains it in griddynamics/rosetta, which has 353 GitHub stars. The repository holds 12 skills in this directory. The repository was last updated on September 29, 2026.

Source: griddynamics/rosetta on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.