Agent skill
axiom
Query Axiom logs and datasets using APL (Axiom Processing Language). Use when investigating production errors, debugging webhook failures, checking log patterns, or analyzing system behavior.
Install this agent skill to your Project
npx add-skill https://github.com/civitai/civitai/tree/main/.claude/skills/axiom
SKILL.md
Axiom
Query Axiom datasets using APL (Axiom Processing Language). Supports log search, aggregation, field analysis, and time-based filtering.
Setup
Create .env in this skill directory:
AXIOM_TOKEN=xaat-your-token-here
AXIOM_ORG_ID=civitai-cxe5
AXIOM_DATASTREAM=civitai-prod
AXIOM_DOMAIN=api.axiom.co
Token needs read/query permissions (the project .env token is ingest-only).
Quick Reference
SKILL_DIR=".claude/skills/axiom"
# List available datasets
node "$SKILL_DIR/axiom.mjs" datasets
# Run an APL query
node "$SKILL_DIR/axiom.mjs" query "['civitai-prod'] | where name == 'nowpayments-webhook' | take 10" --format legacy --json
# Search logs with filters
node "$SKILL_DIR/axiom.mjs" query "['civitai-prod'] | where name == 'some-service' and type == 'error' | project _time, message, error | sort by _time desc | take 50" --start "2026-03-01T00:00:00Z" --end "2026-04-01T00:00:00Z" --format legacy --json
# Count errors by message
node "$SKILL_DIR/axiom.mjs" query "['civitai-prod'] | where name == 'my-service' | summarize count() by message | order by count_ desc" --start "2026-03-01T00:00:00Z" --format legacy --json
# Top values for a field
node "$SKILL_DIR/axiom.mjs" query "['civitai-prod'] | where type == 'error' | summarize count() by name | order by count_ desc | take 20" --format legacy --json
Commands
| Command | Description |
|---|---|
datasets |
List all available datasets |
dataset-info <name> |
Get info about a specific dataset |
query "<APL>" |
Run any APL query |
search <dataset> --where "..." |
Search with filters |
count <dataset> --where "..." --by <field> |
Count/aggregate |
tail <dataset> |
Most recent events |
top <dataset> <field> |
Top values for a field |
Important Notes
- Use
--format legacy --jsonfor reliable output. The tabular format can return empty rows for some queries. - Time ranges: Use
--startand--endflags with ISO 8601 timestamps, or useago()in APL (e.g.,_time > ago(24h)). - Field paths: Log data is under the
data.prefix in legacy format. Use field names directly in APL (e.g.,name,message,type). - Summarize queries: Return results in
buckets.series[].groups[]in legacy format, not inmatches[].
Known Datasets
| Dataset | Description |
|---|---|
civitai-prod |
Main production logs (services, webhooks, jobs) |
civitai-stage-new |
Staging environment |
civitai-next |
Next.js application logs |
webhooks |
Webhook event tracking |
clickhouse |
ClickHouse integration errors |
notifications |
Notification service logs |
orchestration-otlp |
Orchestration telemetry |
python-worker |
Python worker process logs |
Common Log Names (civitai-prod)
Services log with a name field. Common ones:
nowpayments-webhook— NowPayments IPN webhook handlernowpayments-service— NowPayments deposit processingreconcile-nowpayments-job— Reconciliation cron job
APL Cheatsheet
# Filter
| where name == "value"
| where field contains "substring"
| where field matches regex "pattern"
# Time range
| where _time > ago(7d)
| where _time between (datetime(2026-03-01) .. datetime(2026-03-31))
# Aggregate
| summarize count() by field
| summarize avg(duration), max(duration) by name
| summarize count() by bin(_time, 1h)
# Sort and limit
| sort by _time desc
| take 50
| order by count_ desc
# Select fields
| project _time, name, message, error
# Extend (computed columns)
| extend duration_ms = duration / 1000
When to Use
- Investigating production errors or webhook failures
- Checking if a specific service is logging errors
- Analyzing error patterns over time
- Debugging payment/deposit processing issues
- Monitoring reconciliation job health
- Verifying deployment behavior changes
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.
bitdex-test
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.
Didn't find tool you were looking for?