Agent skill
bitdex-test
Install this agent skill to your Project
npx add-skill https://github.com/civitai/civitai/tree/main/.claude/skills/bitdex-test
SKILL.md
BitDex Filter Testing
Test that BitDex correctly handles all image search filter combinations used across the site.
Prerequisites
A dev server (or production) must be running with BitDex enabled (Flipt bitdex-image-search set to primary or shadow).
Scripts
1. query.mjs — Interactive Query Tool
Run individual queries against the image search endpoint. Use this to explore, debug, or verify specific filter combinations.
# Basic query
node .claude/skills/bitdex-test/query.mjs --sort Newest --limit 5
# Filter by type and base model
node .claude/skills/bitdex-test/query.mjs --sort "Most Reactions" --types image --base-models "SD 1.5"
# User profile view
node .claude/skills/bitdex-test/query.mjs --username civitai --sort Newest
# Model gallery view
node .claude/skills/bitdex-test/query.mjs --model-version-id 12345 --sort "Most Reactions"
# Remixes
node .claude/skills/bitdex-test/query.mjs --remix-of 12345
node .claude/skills/bitdex-test/query.mjs --remixes-only
node .claude/skills/bitdex-test/query.mjs --non-remixes-only
# NSFW filtering (bitmask: PG=1, PG13=2, R=4, X=8, XXX=16)
node .claude/skills/bitdex-test/query.mjs --nsfw 1 # PG only
node .claude/skills/bitdex-test/query.mjs --nsfw 3 # PG+PG13
node .claude/skills/bitdex-test/query.mjs --nsfw 31 # All (default)
# Machine-readable output
node .claude/skills/bitdex-test/query.mjs --json # Compressed JSON
node .claude/skills/bitdex-test/query.mjs --raw # Full tRPC response
# Pagination
node .claude/skills/bitdex-test/query.mjs --cursor "200|bdx:{...}"
All flags: --base-url, --limit, --sort, --period, --types, --tags, --tools, --techniques, --base-models, --user-id, --username, --model-id, --model-version-id, --post-id, --remix-of, --remixes-only, --non-remixes-only, --with-meta, --from-platform, --nsfw, --cursor, --raw, --json
2. test-filters.mjs — Full Test Suite
Runs all filter combinations organized by site context and outputs a markdown report.
# Run all tests
node .claude/skills/bitdex-test/test-filters.mjs
# Run specific section
node .claude/skills/bitdex-test/test-filters.mjs --section main-feed
# List available sections
node .claude/skills/bitdex-test/test-filters.mjs --list
# Save report to file
node .claude/skills/bitdex-test/test-filters.mjs --output docs/working/bitdex-test-results.md
# Verbose (includes query params in output)
node .claude/skills/bitdex-test/test-filters.mjs --verbose
Test sections:
| Section | What it covers |
|---|---|
main-feed |
/images page — all sorts, periods, types, base models, meta, platform, remix filters, NSFW levels, combinations |
user-profile |
User profile image tab — user-scoped queries with sorts and type filters |
model-gallery |
Model version gallery — modelVersionId-scoped queries |
post-detail |
Post detail page — postId-scoped queries |
remix-detail |
Image remix tab — remixOfId queries |
edge-cases |
Empty results, limit boundaries, multi-tag filters |
How to Review Results
When reviewing the markdown output, look for:
- Errors (❌): Any query that returned an HTTP error — likely a filter that BitDex doesn't handle
- Empty results that shouldn't be: Compare against what you'd expect (e.g., "Newest images" should never be empty)
- Wrong sort order: Check that "Most Reactions" results are sorted by reaction count descending, "Newest" by date descending, etc.
- NSFW leakage: PG-only queries should not return images with nsfwLevel > 1
- Type mismatches: "image only" queries should not return videos
- Missing data: Check that stats, tags, user info, and metadata are populated
- Date sanity: Dates should be reasonable (not year 2106 or 1970)
Extending Tests
Add new test cases to the sections object in test-filters.mjs. Each test is a [name, inputObject] tuple where inputObject matches the getInfiniteImagesSchema fields.
For model-specific or post-specific tests, the agent should first discover real IDs using query.mjs and then substitute them into the test cases.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
clickhouse-query
Run ClickHouse queries for analytics, metrics analysis, and event data exploration. Use when you need to query ClickHouse directly, analyze metrics, check event tracking data, or test query performance. Read-only by default.
redis-inspect
Inspect Redis cache keys, values, and TTLs for debugging. Supports both main cache and system cache. Use for debugging cache issues, checking cached values, and monitoring cache state. Read-only by default.
quick-mockups
Create multiple UI design mockups in parallel. Use when asked to create mockups, wireframes, or design variations for a feature. Creates HTML files using Mantine v7 + Tailwind following Civitai's design system.
flipt
Manage Flipt feature flags - list, create, enable/disable, and configure rollout rules. Use when you need to control feature flag state or set up segmented rollouts.
metabase
Create and manage Metabase questions, dashboards, and public links. Use when the user wants to build metrics dashboards, create saved questions with SQL queries, or share analytics publicly.
agent-review
Get external agent review and feedback. Routes Anthropic models through Claude Agent SDK (uses local subscription) and other models through OpenRouter API. Use for code review, architecture feedback, or any external consultation.
Didn't find tool you were looking for?