Borrowing it
Nothing to install: this file belongs to cliftonc/drizzle-cube. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/cliftonc/drizzle-cube/main/.claude/skills/add-query-mode/SKILL.mdgit clone --depth 1 https://github.com/cliftonc/drizzle-cubeWrote 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/cliftonc/drizzle-cube/add-query-mode)<a href="https://agentmods.dev/skills/cliftonc/drizzle-cube/add-query-mode"><img src="https://agentmods.dev/badge/skills/cliftonc/drizzle-cube/add-query-mode/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/cliftonc/drizzle-cube/add-query-mode"><img src="https://agentmods.dev/badge/skills/cliftonc/drizzle-cube/add-query-mode.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 1 finding, up to medium
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- medium MCP Rug Pull · line 101 npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.Fix: Pin the version: npx @scope/[email protected]
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.1 | $0.00052 | $0.02473 |
| Opus 5.5 | $0.00021 | $0.00989 |
| Sonnet 5.5 | $0.00010 | $0.00495 |
| Haiku 4.5 | $0.00005 | $0.00247 |
Grade A, and why
add-query-mode 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 2mo ago.
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 — 107 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Adding a Query Mode
Drizzle-cube has four analysis modes: query, funnel, flow, and retention. Each mode requires coordinated changes across backend (types → query builder → executor → compiler → cache), frontend (types → adapter → store slice → hooks → UI), tests, and an icon. Follow this checklist in order.
Documentation Context
Before designing or updating an analysis/query mode, review https://www.drizzle-cube.dev/llms.txt for the current documentation map, public API guidance, and mode-related examples. Use repository source and the checklist below as the implementation source of truth when docs and code differ.
Checklist
Backend
-
1. Create type definitions — Create
src/server/types/{mode}.tswith{Mode}QueryConfig,{Mode}ResultRow, and{Mode}ValidationResultinterfaces. Export fromsrc/server/types/index.ts. Add optional{mode}?: {Mode}QueryConfigfield toSemanticQueryinsrc/server/types/query.ts. -
2. Create query builder — Create
src/server/builders/{mode}-query-builder.tswith:has{Mode}(query)detection,validateConfig(config, cubes)validation,build{Mode}Query(config, cubes, context)SQL generation via Drizzle, andtransformResult(rawResult)post-processing. -
3. Integrate with executor — In
src/server/executor.ts, add a{mode}QueryBuilderfield to theQueryExecutorclass, initialize it in the constructor, add detection in theexecute()method, add routing to a newexecute{Mode}QueryWithCache()method, and implementexecute{Mode}Query()anddryRun{Mode}()methods. -
4. Integrate with compiler — In
src/server/compiler.ts, add adryRun{Mode}()public method, add a validation path invalidateQueryAgainstCubes(), and add routing inexplainQuery(). -
5. Update cache utils — In
src/server/cache-utils.ts, addnormalize{Mode}Config()and wire it intonormalizeQuery(). -
6. Database adapter updates (if mode needs DB-specific SQL) — Add abstract methods to
src/server/adapters/base-adapter.tsand implement in postgres, mysql, sqlite, duckdb, snowflake, singlestore, and databend adapters.
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.
- 2mo ago First seen · 107 lines · 52 tokens per session scan A 1e12a77c9b9e
add-query-mode is a skill published in the GitHub repository cliftonc/drizzle-cube (65 stars, last pushed yesterday), licensed MIT. It adds 52 tokens to every session and 2,473 once invoked, about $0.0002 per session on Opus 5.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-08-30.
Other skills, from other repositories
server-side-calls
Call tRPC procedures directly from server code using t.createCallerFactory() and router.createCaller(context) for integration testing, internal server logic, and custom API endpoints. Catch TRPCError and extract HTTP status with getHTTPStatusCodeFromError(). Error handling via onError option.
capture-api-response-test-fixture
For provider response parsing tests, we aim at storing test fixtures with the true responses from the providers (unless they are too large in which case some cutting that does not change semantics is advised).
auditing-warehouse-source-coverage
Audit already-implemented Data warehouse import sources for endpoints, schemas, and tables the vendor's API offers but we never wired up. Use when asked whether a source is missing endpoints, to find new endpoints a vendor has added since a source was built, to refresh COVERAGEGAPS.md, to prioritize which source to…
maintaining-python-tests
Maintains existing pytest and Django test suites without weakening correctness. Use when asked to reduce Python test runtime or CI work, investigate slow pytest families, remove stale migration tests, consolidate repeated setup, improve Python test ownership, or measure whether a test optimization worked after merge.…
testing-mcp-tools-locally
Set up the local dev environment, seed data, and API keys to test the staff-only managed migrations MCP tools (managed-migrations-support-list, managed-migrations-support-get) end to end. Use when testing batch import support tooling, debugging MCP tool responses or discovery (tools not appearing), or verifying the…
quality-engineering-api-testing
Specify and execute API correctness testing across smoke, functional, contract, integration, and regression selection. Use when writing API test suites, validating API schemas/contracts, asserting business state, or selecting regression tests.