New to Claude Skills? Learn how to install them →

civitai on GitHub

Axiom

Free

Efficiently query and analyze Axiom logs and datasets.

Get this skill

Free · Opens the source repo

What Axiom does

Axiom is a command-line skill designed for querying and analyzing datasets using Axiom Processing Language (APL). It is particularly useful for developers and engineers who need to investigate production errors, debug webhook failures, and analyze system behavior through log data. With Axiom, users can perform log searches, aggregations, field analyses, and time-based filtering to gain insights into application performance and issues.

The skill supports a variety of commands that allow users to list available datasets, run APL queries, and filter logs based on specific criteria. For instance, you can retrieve logs for a specific service, count errors, and summarize data over time. This functionality is crucial for monitoring services, identifying error patterns, and ensuring that applications are running smoothly. Axiom is especially beneficial for teams working with production environments, as it provides the necessary tools to maintain operational integrity.

To set up Axiom, users need to create a .env file with specific environment variables, including an Axiom token with read/query permissions. This ensures that the skill can access the required datasets securely. The skill is built to run in Node.js and Bash environments, making it flexible for integration into existing workflows.

Overall, Axiom is an essential tool for anyone involved in application development and maintenance, providing powerful querying capabilities to facilitate effective debugging and monitoring of production systems.

When to use it

Use Axiom when you need to debug issues in production, analyze logs for error patterns, or investigate specific service behaviors.

When not to use it

Axiom may not be suitable for users who do not have access to Axiom datasets or require a graphical interface for log analysis.

What you can build with it

Investigating Production Errors

Use Axiom to quickly query logs and identify the root cause of errors in your production environment.

Debugging Webhook Failures

Analyze logs related to webhook events to determine why certain webhooks may have failed.

Monitoring Service Health

Regularly check logs for specific services to ensure they are functioning correctly and identify any emerging issues.

How to install Axiom

View source

1. Install with the skills CLI

npx skills add civitai/civitai/axiom --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by civitai

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=your-org-id
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

CommandDescription
datasetsList 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 --json for reliable output. The tabular format can return empty rows for some queries.
  • Time ranges: Use --start and --end flags with ISO 8601 timestamps, or use ago() 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 in matches[].

Known Datasets

DatasetDescription
civitai-prodMain production logs (services, webhooks, jobs)
civitai-stage-newStaging environment
civitai-nextNext.js application logs
webhooksWebhook event tracking
clickhouseClickHouse integration errors
notificationsNotification service logs
orchestration-otlpOrchestration telemetry
python-workerPython worker process logs

Common Log Names (civitai-prod)

Services log with a name field. Common ones:

  • nowpayments-webhook — NowPayments IPN webhook handler
  • nowpayments-service — NowPayments deposit processing
  • reconcile-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

Frequently asked questions about Axiom

Similar skills