Skip to content

Instantly share code, notes, and snippets.

@possibilities
Created March 9, 2026 03:00
Show Gist options
  • Select an option

  • Save possibilities/a7257b7fdcc98500c1a6f475fec25862 to your computer and use it in GitHub Desktop.

Select an option

Save possibilities/a7257b7fdcc98500c1a6f475fec25862 to your computer and use it in GitHub Desktop.
QMD test queries — artbird qmdctl (BM25 search + health)
# QMD Test Queries — artbird qmdctl
# Generated: 2026-03-09T02:57:18Z
# Mode: BM25 keyword search (LLM/vector queries skipped — CPU too slow)
# ============================================
# BM25 Keyword Search (/api/search)
# ============================================
---
test: "keyword: websocket across all"
endpoint: /api/search
request:
query: websocket connection
limit: 5
response_time_ms: 1605
result_count: 5
results:
- docid: "#9ccf70"
collection: "content-topics:zeromq"
title: Language
path: content/documents/github-com-zeromq-rfc/content/docs/rfcs/39/readme.md
score: 0.92
snippet: @@ -22,4 @@ (21 before, 118 after) ZWS connection is starting after successful WebSockets handshake between the client
- docid: "#49f3d6"
collection: "content-topics:zeromq"
title: Preamble
path: content/documents/github-com-zeromq-rfc/content/docs/rfcs/45/readme.md
score: 0.92
snippet: @@ -29,4 @@ (28 before, 143 after) ZWS connection is starting after successful WebSockets handshake between the client
- docid: "#ea0106"
collection: content-links
title: Documentation
path: content/links/7e2620ca.md
score: 0.91
snippet: @@ -3,4 @@ (2 before, 56 after) -- Centrifugo is an open-source scalable real-time messaging server. Centrifugo can inst
- docid: "#0690aa"
collection: content-links
title: Create list
path: content/links/a5c5c338.md
score: 0.91
snippet: @@ -157,4 @@ (156 before, 397 after) * **Message parsing utilities** that normalize Claude streaming payloads. * **WebSo
- docid: "#f13dff"
collection: "content-topics:vitest"
title: browser.connectTimeout
path: .../documents/github-com-vitest-dev-vitest/docs/config/browser/connecttimeout.md
score: 0.91
snippet: "@@ -15,4 @@ (14 before, 0 after) ::: info This is the time it should take for the browser to establish the WebSocket con"
---
test: "keyword: hooks in claude-code"
endpoint: /api/search
request:
query: hooks system prompt
collections: ["content-topics:claude-code"]
limit: 5
response_time_ms: 1519
result_count: 5
results:
- docid: "#b1c194"
collection: "content-topics:claude-code"
title: Automate workflows with hooks
path: content/documents/code-claude-com-docs-en-hooks-guide.md
score: 0.9
snippet: @@ -15,4 @@ (14 before, 696 after) For decisions that require judgment rather than deterministic rules, you can also us
- docid: "#b8bb09"
collection: "content-topics:claude-code"
title: Create custom subagents
path: content/documents/code-claude-com-docs-en-sub-agents.md
score: 0.89
snippet: "@@ -183,4 @@ (182 before, 636 after) The `--agents` flag accepts JSON with the same [frontmatter](#supported-frontmatte"
- docid: "#8cf14e"
collection: "content-topics:claude-code"
title: Hooks reference
path: content/documents/code-claude-com-docs-en-hooks.md
score: 0.89
snippet: @@ -11,4 @@ (10 before, 1848 after) > Reference for Claude Code hook events, configuration schema, JSON input/output fo
- docid: "#ad7aea"
collection: "content-topics:claude-code"
title: Claude Code settings
path: content/documents/code-claude-com-docs-en-settings.md
score: 0.89
snippet: @@ -843,4 @@ (842 before, 149 after) | `CLAUDE_CODE_SHELL_PREFIX` | Command prefix to wrap all bash
- docid: "#5d009d"
collection: "content-topics:claude-code"
title: CLI reference
path: content/documents/code-claude-com-docs-en-cli-reference.md
score: 0.89
snippet: @@ -45,4 @@ (44 before, 127 after) | `--allowedTools` | Tools that execute without prompting for p
---
test: "keyword: useEffect in react"
endpoint: /api/search
request:
query: useEffect cleanup
collections: ["content-topics:react"]
limit: 5
response_time_ms: 1183
result_count: 5
results:
- docid: "#64be98"
collection: "content-topics:react"
title: "Reference {/*reference*/}"
path: ...cuments/github-com-reactjs-react-dev/src/content/reference/react/useeffect.md
score: 0.94
snippet: @@ -928,4 @@ (927 before, 934 after) Note the `ignore` variable which is initialized to `false`, and is set to `true` d
- docid: "#8d623c"
collection: "content-topics:react"
title: "What are Effects and how are they different from events? {/*what-are-effects-and-how-are-they-different-from-events*/}"
path: .../github-com-reactjs-react-dev/src/content/learn/synchronizing-with-effects.md
score: 0.94
snippet: @@ -51,4 @@ (50 before, 1558 after) 2. **Specify the Effect dependencies.** Most Effects should only re-run *when needed
- docid: "#1536aa"
collection: "content-topics:react"
title: "Reference {/*reference*/}"
path: ...ithub-com-reactjs-react-dev/src/content/reference/react/useinsertioneffect.md
score: 0.94
snippet: @@ -8,4 @@ (7 before, 132 after) `useInsertionEffect` is for CSS-in-JS library authors. Unless you are working on a CSS
- docid: "#c2b272"
collection: "content-topics:react"
title: "Reference {/*reference*/}"
path: ...s/github-com-reactjs-react-dev/src/content/reference/react/uselayouteffect.md
score: 0.93
snippet: "@@ -8,4 @@ (7 before, 733 after) `useLayoutEffect` can hurt performance. Prefer [`useEffect`](/reference/react/useEffec"
- docid: "#2a8291"
collection: "content-topics:react"
title: "Reference {/*reference*/}"
path: ...uments/github-com-reactjs-react-dev/src/content/reference/react/strictmode.md
score: 0.93
snippet: "@@ -47,4 @@ (46 before, 1204 after) - Your components will [re-render an extra time](#fixing-bugs-found-by-double-render"
---
test: "keyword: exact phrase"
endpoint: /api/search
request:
query: "\"rate limiter\""
limit: 5
response_time_ms: 1682
result_count: 5
results:
- docid: "#75f725"
collection: "content-topics:perplexity"
title: Rate Limits & Usage Tiers
path: content/documents/docs-perplexity-ai-docs-admin-rate-limits-usage-tiers.md
score: 0.89
snippet: "@@ -175,4 @@ (174 before, 96 after) <Accordion title=\"Rate Limiter Behavior Example\"> Let's examine how **50 requ"
- docid: "#06d7ad"
collection: "content-topics:perplexity"
title: Error Handling
path: content/documents/docs-perplexity-ai-docs-sdk-error-handling.md
score: 0.88
snippet: "@@ -47,4 @@ (46 before, 365 after) except perplexity.RateLimitError as e: print(\"Rate limit exceeded, please ret"
- docid: "#a1bc88"
collection: "content-topics:repoprompt"
title: "#"
path: content/documents/www-youtube-com-ratelimitedpod.md
score: 0.88
snippet: "@@ -1,3 @@ (0 before, 495 after) --- url: https://www.youtube.com/@ratelimitedpod md5: a762d533c97737e4c4f10e58aeba966b"
- docid: "#9b5f4a"
collection: "content-topics:qmd"
title: QMD Query Syntax
path: content/documents/github-com-tobi-qmd/docs/syntax.md
score: 0.87
snippet: "@@ -58,4 @@ (57 before, 126 after) | `word` | Prefix match | `perf` matches \"performance\" | | `\"phrase\"` | Exact phrase "
- docid: "#8f5c83"
collection: "content-topics:perplexity"
title: Performance Optimization
path: content/documents/docs-perplexity-ai-docs-sdk-performance.md
score: 0.87
snippet: "@@ -210,4 @@ (209 before, 453 after) print(f\"Request ID: {response.headers.get('X-Request-ID')}\") print(f\"Rate Limit"
---
test: "keyword: code identifiers"
endpoint: /api/search
request:
query: handleError async retry
limit: 5
response_time_ms: 796
result_count: 1
results:
- docid: "#3eb1f2"
collection: "content-topics:qmd"
title: QMD - Quick Markdown Search
path: content/documents/github-com-tobi-qmd/skills/qmd/skill.md
score: 0.94
snippet: "@@ -49,4 @@ (48 before, 96 after) - Exclude terms: `performance -sports` (minus prefix) - Code identifiers work: `handle"
---
test: "keyword: multi-collection"
endpoint: /api/search
request:
query: configuration file format
collections: ["content-topics:turborepo", "content-topics:vitest", "content-topics:ruff"]
limit: 5
response_time_ms: 1340
result_count: 5
results:
- docid: "#0c1699"
collection: "content-topics:ruff"
title: Configuring Ruff
path: content/documents/github-com-astral-sh-ruff/docs/configuration.md
score: 0.84
snippet: @@ -9,4 @@ (8 before, 843 after) Whether you're using Ruff as a linter, formatter, or both, the underlying configuratio
- docid: "#d90fdf"
collection: "content-topics:ruff"
title: The Ruff Formatter
path: content/documents/github-com-astral-sh-ruff/docs/formatter.md
score: 0.84
snippet: @@ -12,4 @@ (11 before, 661 after) `ruff format` is the primary entrypoint to the formatter. It accepts a list of files
- docid: "#eaba25"
collection: "content-topics:ruff"
title: Settings
path: content/documents/github-com-astral-sh-ruff/docs/editors/settings.md
score: 0.84
snippet: "@@ -21,4 @@ (20 before, 1259 after) 1. **Configuration file path:** Specify the path to a `ruff.toml` or `pyproject.tom"
- docid: "#bf12f9"
collection: "content-topics:ruff"
title: Features
path: content/documents/github-com-astral-sh-ruff/docs/editors/features.md
score: 0.84
snippet: @@ -20,4 @@ (19 before, 95 after) The server dynamically refreshes the diagnostics when a configuration file is changed
- docid: "#e5bd06"
collection: "content-topics:ruff"
title: Migrating from `ruff-lsp`
path: content/documents/github-com-astral-sh-ruff/docs/editors/migration.md
score: 0.84
snippet: "@@ -72,4 @@ (71 before, 86 after) ### Configuration file If you've been providing a configuration file as shown below:"
---
test: "keyword: terminal emulator in links"
endpoint: /api/search
request:
query: terminal emulator gpu
collections: [content-links]
limit: 5
response_time_ms: 943
result_count: 2
results:
- docid: "#0e5372"
collection: content-links
title: Which repo would you like to understand?
path: content/links/f0f0f798.md
score: 0.85
snippet: "@@ -1352,4 @@ (1351 before, 442 after) A cross-platform, OpenGL terminal emulator. 61.8k](/alacritty/alacritty)"
- docid: "#f558bc"
collection: content-links
title: Model Context Protocol servers
path: content/links/b5025440.md
score: 0.72
snippet: "@@ -935,4 @@ (934 before, 725 after) - **[itemit MCP](https://github.com/umin-ai/itemit-mcp)** - itemit is Asset Trackin"
---
test: "keyword: pydantic validation"
endpoint: /api/search
request:
query: pydantic model validation
collections: ["content-topics:pydantic"]
limit: 5
response_time_ms: 1540
result_count: 5
results:
- docid: "#af6d62"
collection: "content-topics:pydantic"
title: `AliasPath` and `AliasChoices`
path: content/documents/github-com-pydantic-pydantic/docs/concepts/alias.md
score: 0.93
snippet: "@@ -334,4 @@ (333 before, 102 after) The `by_alias` and `by_name` flags are available on the [`model_validate()`][pydant"
- docid: "#03e970"
collection: "content-topics:pydantic"
title: Field validators
path: content/documents/github-com-pydantic-pydantic/docs/concepts/validators.md
score: 0.93
snippet: @@ -60,4 @@ (59 before, 861 after) from pydantic import AfterValidator, BaseModel, ValidationError
- docid: "#afd025"
collection: "content-topics:pydantic"
title: "Class not fully defined {#class-not-fully-defined}"
path: content/documents/github-com-pydantic-pydantic/docs/errors/usage-errors.md
score: 0.93
snippet: @@ -11,4 @@ (10 before, 1386 after) This error is raised when a type referenced in an annotation of a pydantic-validated
- docid: "#211166"
collection: "content-topics:pydantic"
title: Dataclass config
path: content/documents/github-com-pydantic-pydantic/docs/concepts/dataclasses.md
score: 0.93
snippet: "@@ -8,4 @@ (7 before, 452 after) If you don't want to use Pydantic's [`BaseModel`][pydantic.BaseModel] you can instead "
- docid: "#7454eb"
collection: "content-topics:pydantic"
title: `arguments_type`
path: content/documents/github-com-pydantic-pydantic/docs/errors/validation-errors.md
score: 0.93
snippet: @@ -17,4 @@ (16 before, 2279 after) from pydantic import BaseModel, ValidationError
---
test: "keyword: zeromq pub sub"
endpoint: /api/search
request:
query: publisher subscriber pattern
collections: ["content-topics:zeromq"]
limit: 5
response_time_ms: 1138
result_count: 5
results:
- docid: "#eb7eaa"
collection: "content-topics:zeromq"
title: Preamble
path: content/documents/github-com-zeromq-rfc/content/docs/rfcs/29/readme.md
score: 0.94
snippet: @@ -28,4 @@ (27 before, 122 after) The pattern is intended for event and data distribution, usually from a small number
- docid: "#c2d86a"
collection: "content-topics:zeromq"
title: Key differences to conventional sockets
path: content/documents/github-com-zeromq-zeromq-org/content/docs/socket-api.md
score: 0.94
snippet: "@@ -111,4 @@ (110 before, 468 after) * [**Pub-sub**]({{< relref \"#publish-subscribe-pattern\" >}}), which connects a set"
- docid: "#39d214"
collection: "content-topics:zeromq"
title: Preamble
path: content/documents/github-com-zeromq-rfc/content/docs/rfcs/46/readme.md
score: 0.93
snippet: @@ -93,4 @@ (92 before, 337 after) Each node SHALL create a ZeroMQ PUB and a ZeroMQ SUB socket to communicate with the t
- docid: "#444f85"
collection: "content-topics:zeromq"
title: Preamble
path: content/documents/github-com-zeromq-rfc/content/docs/rfcs/48/readme.md
score: 0.93
snippet: @@ -31,4 @@ (30 before, 73 after) The pattern is intended for event and data distribution, usually from a small number
- docid: "#c89876"
collection: "content-topics:zeromq"
title: License
path: content/documents/github-com-zeromq-rfc/content/docs/rfcs/12/readme.md
score: 0.92
snippet: @@ -10,4 @@ (9 before, 172 after) The Clustered Hashmap Protocol (CHP) defines a cluster-wide key-value hashmap, and me
---
test: "keyword: yabai window rules"
endpoint: /api/search
request:
query: window management tiling rules
collections: ["content-topics:yabai"]
limit: 5
response_time_ms: 1588
result_count: 5
results:
- docid: "#896f33"
collection: "content-topics:yabai"
title: Commands
path: ...ts/github-com-asmvik-yabai-wiki-commands-automation-with-rules-and-signals.md
score: 0.95
snippet: @@ -383,4 @@ (382 before, 155 after) Rules and signals can be used to automate window management. Rules define how wind
- docid: "#456309"
collection: "content-topics:yabai"
title: Commands
path: content/documents/github-com-asmvik-yabai-wiki-commands-focus-window.md
score: 0.94
snippet: @@ -383,4 @@ (382 before, 155 after) Rules and signals can be used to automate window management. Rules define how wind
- docid: "#9c65da"
collection: "content-topics:yabai"
title: Commands
path: content/documents/github-com-asmvik-yabai-wiki-commands-move-window.md
score: 0.94
snippet: @@ -383,4 @@ (382 before, 155 after) Rules and signals can be used to automate window management. Rules define how wind
- docid: "#97e9d9"
collection: "content-topics:yabai"
title: Commands
path: content/documents/github-com-asmvik-yabai-wiki-commands-window-commands.md
score: 0.94
snippet: @@ -383,4 @@ (382 before, 155 after) Rules and signals can be used to automate window management. Rules define how wind
- docid: "#650191"
collection: "content-topics:yabai"
title: Commands
path: content/documents/github-com-asmvik-yabai-wiki-commands-modify-window-tree.md
score: 0.94
snippet: @@ -383,4 @@ (382 before, 155 after) Rules and signals can be used to automate window management. Rules define how wind
---
test: "keyword: sqlite in sqlmodel"
endpoint: /api/search
request:
query: sqlite database connection
collections: ["content-topics:sqlmodel"]
limit: 5
response_time_ms: 1053
result_count: 5
results:
- docid: "#9087ba"
collection: "content-topics:sqlmodel"
title: Create a Table with SQLModel - Use the Engine
path: ...nt/documents/github-com-fastapi-sqlmodel/docs/tutorial/create-db-and-table.md
score: 0.93
snippet: @@ -14,4 @@ (13 before, 566 after) * Define a table with **SQLModel** * Create the same SQLite database and table with *
- docid: "#432bee"
collection: "content-topics:sqlmodel"
title: Create Connected Tables
path: .../github-com-fastapi-sqlmodel/docs/tutorial/connect/create-connected-tables.md
score: 0.93
snippet: @@ -184,4 @@ (183 before, 34 after) As we saw before, those `VARCHAR` columns are converted to `TEXT` in SQLite, which
- docid: "#baa8fb"
collection: "content-topics:sqlmodel"
title: tutorial003
path: ...-sqlmodel/docs-src/tutorial/create-db-and-table/annotations/en/tutorial003.md
score: 0.92
snippet: @@ -37,4 @@ (36 before, 41 after) This doesn't create the database yet, no file or table is created at this point,
- docid: "#a10a96"
collection: "content-topics:sqlmodel"
title: Create Rows - Use the Session - INSERT
path: content/documents/github-com-fastapi-sqlmodel/docs/tutorial/insert.md
score: 0.92
snippet: @@ -121,4 @@ (120 before, 232 after) Because we have Python code executing with data in memory, and the database is an
- docid: "#af899e"
collection: "content-topics:sqlmodel"
title: test_main_003
path: ...utorial/fastapi/app-testing/tutorial001-py310/annotations/en/test-main-003.md
score: 0.92
snippet: "@@ -15,4 @@ (14 before, 25 after) We use the new URL of the database for tests: ```"
---
test: "keyword: embedding vector in chromadb"
endpoint: /api/search
request:
query: embedding vector similarity search
collections: ["content-topics:chromadb"]
limit: 5
response_time_ms: 708
result_count: 1
results:
- docid: "#516eee"
collection: "content-topics:chromadb"
title: Code Search Agent
path: content/examples/github-com-chroma-core-chroma-cookbooks/code-search/readme.md
score: 0.94
snippet: @@ -176,4 @@ (175 before, 74 after) |------|-------------| | **Semantic Search** | Vector similarity search for conceptu
---
test: "keyword: vitest assertion matchers"
endpoint: /api/search
request:
query: expect assertion matcher toEqual
collections: ["content-topics:vitest"]
limit: 5
response_time_ms: 486
result_count: 4
results:
- docid: "#08f0ba"
collection: "content-topics:vitest"
title: expectTypeOf
path: content/documents/github-com-vitest-dev-vitest/docs/api/expect-typeof.md
score: 0.97
snippet: "@@ -41,4 @@ (40 before, 533 after) ::: This matcher checks if expect type extends provided type. It is different from `t"
- docid: "#cec68c"
collection: "content-topics:vitest"
title: expect
path: content/documents/github-com-vitest-dev-vitest/docs/api/expect.md
score: 0.97
snippet: @@ -13,4 @@ (12 before, 2215 after) `expect` is used to create assertions. In this context `assertions` are functions t
- docid: "#d046bb"
collection: "content-topics:vitest"
title: Testing Types
path: content/documents/github-com-vitest-dev-vitest/docs/guide/testing-types.md
score: 0.96
snippet: @@ -49,4 @@ (48 before, 104 after) When types don't match, `.toEqualTypeOf` and `.toExtend` use a special helper type t
- docid: "#e86d0d"
collection: "content-topics:vitest"
title: Features
path: content/documents/github-com-vitest-dev-vitest/docs/guide/features.md
score: 0.95
snippet: "@@ -84,4 @@ (83 before, 227 after) ::: warning When running concurrent tests, Snapshots and Assertions must use `expect`"
---
test: "keyword: nextjs server components"
endpoint: /api/search
request:
query: server component streaming
collections: ["content-topics:nextjs"]
limit: 5
response_time_ms: 358
result_count: 0
results:
---
test: "keyword: textual widgets"
endpoint: /api/search
request:
query: widget compose mount
collections: ["content-topics:textual"]
limit: 5
response_time_ms: 483
result_count: 5
results:
- docid: "#0de051"
collection: "content-topics:textual"
title: App Basics
path: content/documents/github-com-textualize-textual/docs/guide/app.md
score: 0.94
snippet: @@ -142,4 @@ (141 before, 248 after) When you mount a widget, Textual will mount everything the widget *composes*. Text
- docid: "#5407ba"
collection: "content-topics:textual"
title: Reactivity
path: content/documents/github-com-textualize-textual/docs/guide/reactivity.md
score: 0.93
snippet: @@ -236,4 @@ (235 before, 276 after) An alternative to a refresh is *recompose*. If you set `recompose=True` on a reacti
- docid: "#634552"
collection: "content-topics:textual"
title: Tutorial
path: content/documents/github-com-textualize-textual/docs/tutorial.md
score: 0.93
snippet: @@ -475,4 @@ (474 before, 29 after) The Stopwatch app creates widgets when it starts via the `compose` method. We will
- docid: "#6a8e38"
collection: "content-topics:textual"
title: Screens
path: content/documents/github-com-textualize-textual/docs/guide/screens.md
score: 0.93
snippet: @@ -13,4 @@ (12 before, 359 after) Textual requires that there be at least one screen object and will create one implic
- docid: "#43d53c"
collection: "content-topics:textual"
title: Styles
path: content/documents/github-com-textualize-textual/docs/guide/styles.md
score: 0.91
snippet: @@ -40,4 @@ (39 before, 323 after) The compose method stores a reference to the widget before yielding it. In the mount
# ============================================
# Structured lex queries via /api/query
# (lex-only, no LLM expansion)
# ============================================
---
test: "structured lex: turborepo caching"
endpoint: /api/query
request:
searches:
- type: lex
query: remote cache artifacts
collections: ["content-topics:turborepo"]
limit: 5
response_time_ms: timeout
error: query timed out after 30s
---
test: "structured lex: dspy modules"
endpoint: /api/query
request:
searches:
- type: lex
query: module predict chain
collections: ["content-topics:dspy"]
limit: 5
response_time_ms: timeout
error: query timed out after 30s
---
test: "structured lex: process-compose"
endpoint: /api/query
request:
searches:
- type: lex
query: process dependency restart
collections: ["content-topics:process-compose"]
limit: 5
response_time_ms: timeout
error: query timed out after 30s
---
test: "structured lex: lima VM"
endpoint: /api/query
request:
searches:
- type: lex
query: virtual machine container linux
collections: ["content-topics:lima"]
limit: 5
response_time_ms: timeout
error: query timed out after 30s
---
test: "structured lex: mermaid diagrams"
endpoint: /api/query
request:
searches:
- type: lex
query: flowchart sequence diagram
collections: ["content-topics:mermaid"]
limit: 5
response_time_ms: timeout
error: query timed out after 30s
# ============================================
# Health Check
# ============================================
---
test: health endpoint
endpoint: /api/health
response:
status: degraded
search: ok
llm: ok
embeddings:
total: 3829
embedded: 3776
pending: 3231
coverage: 98.6%
# ============================================
# Notes
# ============================================
# - Advanced queries (vec, hyde, expand) skipped: CPU-only mode is too slow
# for LLM-based query expansion (30+ min per query)
# - Embedding generation running in background (qmd embed)
# - Once embeddings complete, vec queries via /api/search will be fast
# - LLM expansion queries via /api/query will remain slow on CPU
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment