Evolving The Data Model
TriliumNext/Trilium
A skill your agent uses when adding a DB migration or a new column/field to a Becca entity in Trilium ("add a migration", "new column on notes/attributes", "ALTER TABLE", "add a field to…
Routes heterogeneous queries to the appropriate index, tool, or answering engine before retrieval.
$ npx skills add agentsope/SkillAlchemy --skill agentsop-query-routing -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install agentsope/SkillAlchemy agentsop-query-routing --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/agentsope/SkillAlchemy.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/agentsop-query-routing .claude/skills/agentsop-query-routing && rm -rf skills-srcUse ~/.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/
Install the "agentsop-query-routing" agent skill from https://github.com/agentsope/SkillAlchemy/tree/master/skills/agentsop-query-routing into .claude/skills/agentsop-query-routing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agentsop-query-routing", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/agentsope/SkillAlchemy/tree/master/skills/agentsop-query-routingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add agentsope/SkillAlchemy --skill agentsop-query-routing -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install agentsope/SkillAlchemy agentsop-query-routing --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/agentsope/SkillAlchemy.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/agentsop-query-routing .agents/skills/agentsop-query-routing && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "agentsop-query-routing" agent skill from https://github.com/agentsope/SkillAlchemy/tree/master/skills/agentsop-query-routing into .agents/skills/agentsop-query-routing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agentsop-query-routing", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add agentsope/SkillAlchemy --skill agentsop-query-routing -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install agentsope/SkillAlchemy agentsop-query-routing --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/agentsope/SkillAlchemy.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/agentsop-query-routing .cursor/skills/agentsop-query-routing && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "agentsop-query-routing" agent skill from https://github.com/agentsope/SkillAlchemy/tree/master/skills/agentsop-query-routing into .cursor/skills/agentsop-query-routing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agentsop-query-routing", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/agentsope/SkillAlchemy.git --path skills/agentsop-query-routing--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add agentsope/SkillAlchemy --skill agentsop-query-routing -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install agentsope/SkillAlchemy agentsop-query-routing --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/agentsope/SkillAlchemy.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/agentsop-query-routing .gemini/skills/agentsop-query-routing && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "agentsop-query-routing" agent skill from https://github.com/agentsope/SkillAlchemy/tree/master/skills/agentsop-query-routing into .gemini/skills/agentsop-query-routing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agentsop-query-routing", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install agentsope/SkillAlchemy agentsop-query-routingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add agentsope/SkillAlchemy --skill agentsop-query-routing -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/agentsope/SkillAlchemy.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/agentsop-query-routing .github/skills/agentsop-query-routing && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "agentsop-query-routing" agent skill from https://github.com/agentsope/SkillAlchemy/tree/master/skills/agentsop-query-routing into .github/skills/agentsop-query-routing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agentsop-query-routing", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add agentsope/SkillAlchemy --skill agentsop-query-routing -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install agentsope/SkillAlchemy agentsop-query-routing --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/agentsope/SkillAlchemy.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/agentsop-query-routing .opencode/skills/agentsop-query-routing && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "agentsop-query-routing" agent skill from https://github.com/agentsope/SkillAlchemy/tree/master/skills/agentsop-query-routing into .opencode/skills/agentsop-query-routing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agentsop-query-routing", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
agentsop-query-routingRoutes heterogeneous queries to the appropriate index, tool, or answering engine before retrieval.
Agentsop Query Routing is an agent skill from agentsope/SkillAlchemy. Routes heterogeneous queries to the appropriate index, tool, or answering engine before retrieval. Use when one endpoint serves multiple handlers, such as summary, vector retrieval, text-to-SQL, or tools, and query types require different paths. Covers LLM, semantic, and rule-based routers, confidence thresholds, fallbacks, and framework mappings. Do not use when one handler serves all queries or branching is fixed.
Its SKILL.md is about 6.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `README.md`, `intermediate/operation_candidates.json` and `references/R1-source-evidence.md`).
It sits in Databases, covering SQL. The repository describes itself as: From thought to skill. From signal to structure. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 6ea799f. It shows what the files ask for, not the result of running them.
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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are python).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Agentsop Query Routing loads about 6.4k tokens when it runs, and up to ~8.2k if it reads all its reference files. Until then it costs about 111 tokens; SKILL.md has 2,960 words of instructions outside code blocks.
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.
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.
The full file from agentsope/SkillAlchemy at commit 6ea799f, republished under its MIT licence (© agentsope). 2,960 words, ~6,369 tokens.
.claude/skills/agentsop-query-routing/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.Third-person operating model for a coder agent that owns a multi-handler answering surface. Audience is the LLM agent writing/reviewing the routing code — not the end user.
One sentence: A retriever is shaped by the query type it was built for; a summary index, a vector index, and a text-to-SQL engine are not interchangeable — so classify the query and route first, then retrieve.
This is an ENHANCE overlay. It distills the cross-framework routing
pattern from three source skills. For the per-framework API, cross-link the
base skill: [[llamaindex]] (RouterQueryEngine), [[agentsop-dify]] (Question
Classifier node), [[agentsop-langgraph]] (conditional edges).
Activate when any of the following holds:
VectorStoreIndex (or any single retriever) is being stretched to answer
query types it was not built for, and quality is uneven across the mix.RouterQueryEngine,
SelectorPromptTemplate, LLMSingleSelector, Dify Question Classifier,
LangGraph add_conditional_edges, "intent classifier", "text-to-SQL or RAG".Do not activate when:
[[agentsop-multi-tenant-rag]].Three principles. Violating any of them produces a router that misroutes silently or routes when it should not.
The index taxonomy is not cosmetic. From [[llamaindex]]: a SummaryIndex is
a "small, fan-out synthesis" primitive — it reads every node to digest a doc;
a VectorStoreIndex is top-k semantic lookup — it reads the few most similar
chunks; a text-to-SQL engine answers aggregate/compute queries that no chunk
contains the answer to. Ask a vector index to "summarize the whole document" and
it returns 4 arbitrary chunks; ask a summary index "what is the late-fee clause"
and it fans out over the whole corpus wastefully. The query type names the
correct primitive. Routing is the act of recovering that name at runtime.
Operational corollary:
index.as_query_engine()over a singleVectorStoreIndexanswering a heterogeneous query mix is the symptom this skill exists to fix. The fix is per-type handlers + a router on top.
Routing is a classification step that runs before any retrieval. It reads
only the query (and optionally light context) and emits a destination, not an
answer. This ordering is what bounds latency and cost: you pay for the router
once, then exactly one downstream handler, instead of fanning out to all of
them and merging. LlamaIndex's RouterQueryEngine, Dify's Question Classifier
node feeding IF/ELSE branches, and LangGraph's conditional edge over state
are the same shape — a selector function (query) -> handler_id evaluated up
front. The three frameworks differ only in how the selector is implemented
(§7).
Every router — LLM, embedding, or keyword — picks among destinations described
in words or examples. In LlamaIndex the signal is the
QueryEngineTool.description; in Dify it is the class label + instruction; in
LangGraph it is whatever the routing function reads off state plus the node
names. From [[llamaindex]] Dilemma 3: "invest in QueryEngineTool.description
— it's the only signal the router/agent sees." A misroute is, four times out
of five, a bad description, not a bad model. Fix the description before
swapping the router type.
The fourth case is genuinely ambiguous queries — for those, Principle of Fallback (§3 Stage 4) applies: route to a safe default, never guess silently.
Five stages. Each gates the next. Stop and reconsider at the first "no".
Gate questions:
If all three are yes, continue.
Build the table before writing the router. One row per query kind:
| Query kind | Example | Correct handler | Primitive |
|---|---|---|---|
| Summarize / digest | "summarize the Q3 report" | summary engine | SummaryIndex |
| Fact lookup | "what is the late-fee clause" | vector engine | VectorStoreIndex + filters |
| Compute / aggregate | "how many orders shipped in Q3" | text-to-SQL engine | NL2SQL over the DB |
| Compare / multi-hop | "diff 2024 vs 2025 policy" | decomposition engine | SubQuestionQueryEngine |
| Out of scope | "what's the weather" | default / refuse | fallback handler |
This table is the spec for both the handlers and the router. Mapping mirrors
[[llamaindex]] Stage 4 ("Compose for query heterogeneity").
Implement and test each engine independently against its own query kind before wiring the router. A misroute is undebuggable if the handlers themselves are wrong. Author each handler's description / label here (Principle 3) — the destination metadata is part of the handler, not the router.
Three router families, cheapest to most capable:
| Family | How it decides | Pick when |
|---|---|---|
| Keyword / rule | regex / substring / heuristic over the query | destinations are lexically distinct ("SELECT", "summarize", file extensions); latency-critical; cost-critical |
| Embedding / semantic | embed query, nearest destination description | destinations semantically distinct but not lexically; no per-call LLM budget; deterministic-ish |
| LLM / selector | LLM reads query + descriptions, returns choice (single or multi) | destinations need reasoning to disambiguate; multi-select needed; quality > latency |
Default ladder: start keyword if the types are lexically separable; else LLM selector; reach for embedding when you want a middle point (no LLM hop, better than keyword). Always emit a confidence / score, never just a label.
Every router must define behavior for the unrouteable query:
{query_hash, chosen_handler, score, fell_back}
so misroutes are observable, not anecdotal.A router with no fallback is the single most common production failure here (anti-pattern A2).
Format: Trigger / Action / Output / Evidence.
[[llamaindex]] Stage 0 ("What is the query distribution?") +
Stage 4 heterogeneity table.SummaryIndex for digest,
VectorStoreIndex for lookup, NL2SQL for compute, SubQuestionQueryEngine
for compare). Test each against its own kind in isolation. Author its
description/label.[[llamaindex]] OP-06 RouteByQueryType; OP-07 DecomposeMultiHop.[[agentsop-dify]] IF/ELSE node over query; [[agentsop-langgraph]] conditional
edge as a pure Python predicate (add_conditional_edges).[[llamaindex]] EmbeddingSingleSelector family; router docs.RouterQueryEngine(selector=LLMSingleSelector.from_defaults(), query_engine_tools=[...]).[[llamaindex]] OP-06 + Dilemma 3; SelectorPromptTemplate.[[agentsop-langgraph]] conditional edge can return a "__default__"
branch; [[agentsop-dify]] Question Classifier has a built-in "other/else" class.{ts, query_hash, chosen_handler, selector_score, fell_back}
on every decision; surface a misroute dashboard.[[agentsop-dify]] 7-class trace incl. routing; [[agentsop-langgraph]]
LangSmith trace of the conditional edge.[[llamaindex]] Dilemma 3 ("the only signal the router sees").困境: A 3-way router (summary / lookup / SQL) misroutes ~12% of queries — some lookup queries land on the SQL engine and error out. The team is split: fine-tune / swap to a bigger LLM selector, vs. add a catch-all fallback.
约束:
决策步骤:
结果: Description fix + fallback, no model change. The two moves are
complementary, not either/or: improve the classifier signal (descriptions)
and add a fallback for the irreducible ambiguity. Mirrors [[llamaindex]]
Dilemma 3's "fix the supervisor before switching paradigms" logic and
[[agentsop-langgraph]]'s "hitting the limit means the logic is wrong" stance.
可提取的操作: OP-08, OP-06, OP-07.
困境: An LLM selector routes correctly but adds ~600ms + a token cost to every query. Traffic is high-QPS and most queries are lexically obvious ("summarize…", SQL-shaped, or a plain question). Is the LLM hop worth it?
约束:
[[agentsop-dify]]'s known per-node latency overhead and [[agentsop-langgraph]]'s
"checkpoint serialisation adds overhead, latency budget <200ms" boundary both
argue against an LLM hop on every request.决策步骤:
[[llamaindex]]'s "exhaust cheap knobs first" and
[[agentsop-langgraph]]'s "promote upward only as needed" ladder.结果: A two-tier (cascade) router — cheap router handles the obvious majority instantly, LLM selector handles the ambiguous minority. Cost and p95 drop ~5×; accuracy is preserved because the cheap tier only acts when confident. Reserve the LLM selector for where reasoning is actually required (Principle 2 + the §3 Stage 3 ladder).
可提取的操作: OP-03, OP-04, OP-05, OP-06.
困境: Some queries legitimately need two handlers ("summarize the contract and tell me the late-fee clause"). A single-select router forces a wrong binary choice.
约束:
决策步骤:
LLMMultiSelector /
Dify branching to multiple nodes / LangGraph Send fan-out to multiple
handlers) and add a synthesis node to merge results.结果: Single-select by default; multi-select only on the measured
multi-intent slice, paired with explicit synthesis. Mirrors [[agentsop-langgraph]]
"don't fan out with Send for fixed-cardinality work."
可提取的操作: OP-05, OP-07.
| # | Anti-pattern | Why it's wrong | Correct move |
|---|---|---|---|
| A1 | Adding a router when one index already serves every query | Pure overhead: an extra hop + a new failure mode for zero benefit | Single index; route only when ≥2 handlers differ in fit (Stage 0) |
| A2 | Router with no fallback / default branch | Ambiguous or out-of-scope queries hit a random or erroring handler | Confidence threshold → documented default / refuse (OP-06) |
| A3 | LLM selector on every query when keyword would do | p95 latency + per-query token cost for separable traffic | Tier: cheap router first, LLM only for the ambiguous tail (Dilemma 2) |
| A4 | Vague destination descriptions | Router can't disambiguate; misroutes blamed on the model | Author precise descriptions + examples; fix here first (OP-08) |
| A5 | No routing decision logging | Misroutes surface as user complaints, not metrics | Log {query, chosen, score, fell_back} per decision (OP-07) |
| A6 | Routing by tenant/permission instead of query kind | That's access control, not query routing | Use [[agentsop-multi-tenant-rag]] filter at the store; route by kind only |
| A7 | Multi-select as the default | Doubles cost + needs merge for mostly single-intent traffic | Single-select default; multi only on measured multi-intent slice (Dilemma 3) |
| A8 | Best-guess on low confidence | Silent wrong route degrades the answer with no signal | Below threshold → fallback, never guess (OP-06) |
| A9 | Tuning the router before the handlers work | A misroute is undebuggable atop broken handlers | Build + verify each handler in isolation first (Stage 2) |
[[agentsop-multi-tenant-rag]].[[agentsop-langgraph]] cycles.RouterQueryEngine / classifier with no default / other branch.QueryEngineTool(description="index") — uselessly vague description.tenant_id — that's filtering, not routing.(query, expected_handler) pairs gating router changes.The same selector (query) -> handler_id surface across the three base skills.
All verified against the source SKILLs (May 2026). Cross-link the base skill for
the full API.
RouterQueryEngine + selectors → [[llamaindex]]from llama_index.core.query_engine import RouterQueryEngine
from llama_index.core.selectors import LLMSingleSelector # or LLMMultiSelector,
# EmbeddingSingleSelector
from llama_index.core.tools import QueryEngineTool
tools = [
QueryEngineTool.from_defaults(
query_engine=summary_engine,
description="Useful for SUMMARIZING or digesting an entire document."),
QueryEngineTool.from_defaults(
query_engine=vector_engine,
description="Useful for LOOKING UP a specific fact or clause."),
]
router = RouterQueryEngine(
selector=LLMSingleSelector.from_defaults(), # LLM selector family
query_engine_tools=tools, # descriptions are the routing signal
)The selector reads each QueryEngineTool.description (the only routing signal —
Principle 3). Selector families: LLMSingleSelector, LLMMultiSelector,
EmbeddingSingleSelector, PydanticSingleSelector. SelectorPromptTemplate
customizes the LLM prompt. RouterQueryEngine over per-task indices is "often
the correct top-level shape, not a single monolithic VectorStoreIndex"
([[llamaindex]] Principle 3 + OP-06).
[[agentsop-dify]]The Question Classifier node (an LLM node) takes the query and emits one of
N declared classes; each class wires to a downstream branch (Knowledge
Retrieval / LLM / Code / HTTP / SQL-via-Code). It is the visual analog of an
LLM selector. The built-in "other" class is the fallback (OP-06). Routing logic
that doesn't need an LLM uses the IF/ELSE node (keyword/rule router, OP-03).
Node taxonomy: Question Classifier, Parameter Extractor, IF/ELSE. The
classifier's class label + instruction is the routing signal (Principle 3).
[[agentsop-langgraph]]def route(state) -> str: # the selector function
q = state["query"]
if looks_like_sql(q): return "sql" # keyword tier (OP-03)
if score := classify(q): return score.label # LLM/embedding tier (OP-04/05)
return "vector_default" # fallback (OP-06)
graph.add_conditional_edges("router", route,
{"sql": "sql_node",
"summary": "summary_node",
"vector_default": "vector_node"})"Graph topology is just routing logic over state… a conditional edge reads
state and picks a next node" ([[agentsop-langgraph]] Principle 3). The mapping dict's
keys are the destinations; the route function is the selector — it can be
keyword, embedding, or LLM, or a tier of all three (Dilemma 2). For genuine
multi-route fan-out, return a list of Send(...) instead of one label.
| LlamaIndex | Dify | LangGraph | |
|---|---|---|---|
| Router primitive | RouterQueryEngine | Question Classifier node | add_conditional_edges |
| Selector impl | LLM / Embedding / Pydantic selector | LLM classifier (or IF/ELSE for rules) | any Python fn (keyword/embed/LLM) |
| Routing signal | QueryEngineTool.description | class label + instruction | node names + what route() reads |
| Fallback | selector default / catch-all tool | "other" class | a "__default__" branch |
| Multi-route | LLMMultiSelector | branch to multiple nodes | list of Send(...) |
| Deep skill | [[llamaindex]] | [[agentsop-dify]] | [[agentsop-langgraph]] |
The three are the same pattern — classify the query up front, dispatch to the structurally-correct handler, fall back when uncertain. Pick the framework your stack already uses; the routing discipline (Principles 1-3, Stages 0-4) is identical.
references/R1-source-evidence.md — every cited claim resolved to its source
SKILL line.intermediate/operation_candidates.json — machine-readable operation list.[[name]])[[llamaindex]] — llamaindex-sop-skill/SKILL.md (RouterQueryEngine,
selectors, OP-06 RouteByQueryType, Dilemma 3, Index taxonomy).[[agentsop-dify]] — dify-sop-skill/SKILL.md (Question Classifier / IF-ELSE nodes,
node taxonomy, per-node latency boundary).[[agentsop-langgraph]] — langgraph-sop-skill/SKILL.md (conditional edges as
routers, Principle 3 topology-as-routing, Send fan-out, latency boundary).© agentsope, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files (references) in skills/agentsop-query-routing of agentsope/SkillAlchemy.
Open the folder on GitHubat commit 6ea799f
Agentsop Query Routing 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Agentsop Query Routing this skillagentsope/SkillAlchemy | 459 | — | ~6.4k | Automated safety check: Pass | MIT | |
| Evolving The Data ModelTriliumNext/Trilium | 38k | — | ~2.1k | Automated safety check: Pass | AGPL-3.0 | |
| Orchardcore Data MigrationOrchardCMS/OrchardCore | 8.2k | — | ~1.7k | Automated safety check: Pass | BSD-3-Clause | |
| SQL Optimization Patternsynulihao/AgentSkillOS | 617 | 11 repos | ~3.3k | Automated safety check: Pass | None | |
| SQL PortabilityHL7/sql-on-fhir | 150 | — | ~512 | Automated safety check: Pass | Custom licence | |
| StmoSAP/project-foxhound | 180 | 2 repos | ~1.8k | Automated safety check: Pass | GPL-3.0 |
TriliumNext/Trilium
A skill your agent uses when adding a DB migration or a new column/field to a Becca entity in Trilium ("add a migration", "new column on notes/attributes", "ALTER TABLE", "add a field to…
OrchardCMS/OrchardCore
Creates and updates OrchardCore data migrations (DataMigration classes with CreateAsync/UpdateFromX).
ynulihao/AgentSkillOS
Master SQL query optimization, indexing strategies, and EXPLAIN analysis to dramatically improve database performance and eliminate slow queries.
HL7/sql-on-fhir
Analyse whether a SQL query is portable across database implementations using sqlglot transpilation.
SAP/project-foxhound
Manage Redash queries and dashboards on Mozilla's STMO (sql.telemetry.mozilla.org) using stmo-cli.
kurealnum/dotfiles
A skill your agent uses when generating or regenerating Drizzle migration files, changing database schema tables or columns, resolving migration sequence conflicts after rebase, reviewing migration…
agentsope/SkillAlchemy
SOP for terminal-based, git-native AI pair programming with Aider (git work-tree + tree-sitter repo-map + edit-format + human-in-loop REPL).
agentsope/SkillAlchemy
Coder-agent working-file budget discipline: keep the editable working set (files you /add into writable context) under ~25k tokens, separate "read" from "edit", delegate breadth to a read-only…
agentsope/SkillAlchemy
Split a multi-call LM workflow by cognitive load, not by accuracy: let one strong model make the few reasoning decisions and a cheap model do the many mechanical executions (Aider architect+editor…
agentsope/SkillAlchemy
SOP for building multi-agent systems with CrewAI — role-based collaboration, sequential/hierarchical processes, Flows, memory, delegation.
agentsope/SkillAlchemy
SOP for building LLM applications on Dify — visual workflow + chatflow + agent + RAG knowledge base + plugin marketplace + observability, self-hostable.
agentsope/SkillAlchemy
Designs multiscale chunking for RAG by embedding small units for retrieval precision and returning larger context for synthesis.
Categories
Routes heterogeneous queries to the appropriate index, tool, or answering engine before retrieval. Agentsop Query Routing is an agent skill from agentsope/SkillAlchemy. Routes heterogeneous queries to the appropriate index, tool, or answering engine before retrieval.
Agentsop Query Routing fits situations like: one endpoint serves multiple handlers; such as summary; vector retrieval; query types require different paths.
Run `npx skills add agentsope/SkillAlchemy --skill agentsop-query-routing -a claude-code`. Or copy the skill folder (skills/agentsop-query-routing in agentsope/SkillAlchemy) into .claude/skills/agentsop-query-routing in your project. Claude Code loads it when a task matches its description.
Run `npx skills add agentsope/SkillAlchemy --skill agentsop-query-routing -a codex`. Or copy the skill folder (skills/agentsop-query-routing in agentsope/SkillAlchemy) into .agents/skills/agentsop-query-routing in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add agentsope/SkillAlchemy --skill agentsop-query-routing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/agentsop-query-routing, .gemini/skills/agentsop-query-routing, .github/skills/agentsop-query-routing and .opencode/skills/agentsop-query-routing in your project.
SKILL.md names no scripts, command-line tools or credentials: Agentsop Query Routing is instructions for the agent only. Our summary lists: Python 3.
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.
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.
Agentsop Query Routing is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 6.4k tokens (SKILL.md is roughly 25k 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 1.8k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Agentsop Query Routing: Evolving The Data Model (TriliumNext/Trilium, 38k stars), Orchardcore Data Migration (OrchardCMS/OrchardCore, 8.2k stars), SQL Optimization Patterns (ynulihao/AgentSkillOS, 617 stars) and SQL Portability (HL7/sql-on-fhir, 150 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
agentsope (a GitHub user) maintains it in agentsope/SkillAlchemy, which has 459 GitHub stars. The repository holds 45 skills in this directory. The repository was last updated on September 2, 2026.
Source: agentsope/SkillAlchemy on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.