ワンクリックで
logs
Query the loxel Axiom dataset to investigate logs. Use the `axiom query` CLI with APL (Axiom Processing Language).
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Query the loxel Axiom dataset to investigate logs. Use the `axiom query` CLI with APL (Axiom Processing Language).
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Add a new language server to loxel with full integration across all layers (build/download, server manager, server routing, client connection, Monaco registration, highlighting/icons, editor URI scheme, packaging). Use when adding support for a new programming language or file type that needs LSP features like completions, hover, diagnostics, or go-to-definition.
Compact the current conversation into a handoff document for another agent to pick up. Use when ending a session, switching contexts, or preparing work for a fresh agent to continue.
Apply Convex implementation rules and review standards for backend work. Use when creating or modifying Convex queries, mutations, actions, HTTP endpoints, schema/indexes, validators, pagination, cron jobs, or TypeScript types in Convex codebases.
Create or improve a Claude Code skill (SKILL.md). Use when building a new skill, reviewing an existing skill for quality, or converting a repeated workflow into a reusable skill.
Generate architecture diagrams as .excalidraw files from codebase analysis. Use when the user asks to create architecture diagrams, system diagrams, visualize codebase structure, generate excalidraw files or describe flows visually.
Explore locally cloned open source package internals in ~/git/open-source/. Use when checking a dependency's internal API, types, behavior, feature availability, or docs — e.g. "how does convex handle pagination", "what args does excalidraw's convertToExcalidrawElements accept", "check if dockview supports custom tab renderers".
| name | logs |
| description | Query the loxel Axiom dataset to investigate logs. Use the `axiom query` CLI with APL (Axiom Processing Language). |
| allowed-tools | Bash |
Interpret the user's request: $ARGUMENTS
All loxel logs are in the loxel dataset. Always start queries with ['loxel'].
All logs use the same schema via Direct HTTP transport (@axiomhq/js).
Sources: ccm-daemon, ccm-mobile, channel-worker
Key fields:
message - log messagelevel - log level: "debug", "info", "warn", "error"fields.source - source identifier: "ccm-daemon", "ccm-mobile", "channel-worker"fields.* - structured context (e.g. fields.sessionId, fields.terminalId, fields.type, fields.channelId)fields.error.name - error class name (e.g. "ReferenceError", "StringError")fields.error.message - error message textfields.error.cause.* - recursive error cause chainfields.stack - stack tracefields.componentStack - React component stack (ccm-mobile)axiom query "<APL_QUERY>" --start-time="-<N>h" [-f table|json]
--start-time accepts relative hours: -1h, -24h, -168h (7 days). Does NOT accept -7d format.-f table for aggregations and human-readable output (default)-f json for raw log entries (one JSON object per line)axiom query "..." -f json | python3 -c "
import json, sys
for line in sys.stdin:
line = line.strip()
if not line: continue
try:
obj = json.loads(line)
filtered = {k: v for k, v in obj.items() if v is not None}
print(json.dumps(filtered, indent=2))
print('---')
except: pass
"
['loxel'] | where ['fields.source'] == 'ccm-daemon'
['loxel'] | where ['fields.source'] == 'channel-worker'
['loxel'] | where level == 'error'
['loxel'] | where message contains 'hook'
['loxel'] | where message startswith 'Daemon'
['loxel'] | where isnotnull(['fields.error.name'])
| project _time, message, level, ['fields.source']
| project _time, message, ['fields.error.name'], ['fields.error.message']
| sort by _time desc
| take 20
-f table)| summarize count() by ['fields.source']
| summarize count() by level
| summarize count() by message | sort by count_ desc | take 15
| summarize count() by bin_auto(_time)
| summarize count() by bin_auto(_time), ['fields.source']
Fields containing dots must be quoted: ['fields.source'], ['fields.sessionId'], ['service.name']
Simple fields without dots need no quoting: message, level, severity, body
The != operator does not work with string literals in APL. Use not() instead:
| where not(body == 'message')
| where not(['fields.source'] == 'ccm-daemon')
Use isnotnull():
| where isnotnull(['fields.error.name'])
axiom query "['loxel'] | where level == 'error' | project _time, message, ['fields.error.name'], ['fields.error.message'], ['fields.source'] | sort by _time desc | take 20" --start-time="-24h" -f table
axiom query "['loxel'] | where ['fields.source'] == 'ccm-daemon' | project _time, message, ['fields.type'], ['fields.sessionId'] | sort by _time desc | take 20" --start-time="-24h" -f table
axiom query "['loxel'] | where ['fields.source'] == 'ccm-mobile' | where level == 'error' | project _time, message, ['fields.error.name'], ['fields.error.message'], ['fields.componentStack'] | sort by _time desc | take 20" --start-time="-24h" -f table
axiom query "['loxel'] | where level == 'error' | summarize count() by bin_auto(_time)" --start-time="-168h" -f table
axiom query "['loxel'] | summarize count() by ['fields.source']" --start-time="-24h" -f table
axiom query "['loxel'] | summarize count() by message | sort by count_ desc | take 20" --start-time="-24h" -f table
axiom query "['loxel'] | where ['fields.source'] == 'channel-worker' | project _time, message, level, ['fields.channelId'] | sort by _time desc | take 20" --start-time="-24h" -f table
axiom query "['loxel'] | where ['fields.sessionId'] == 'SESSION_ID_HERE' | project _time, message, ['fields.type'] | sort by _time asc" --start-time="-168h" -f table
-24h) and narrow down as needed-f table for aggregations and overviews, -f json when you need full log detailsfields.type indicates the hook event type (e.g. PostToolUse)fields.channelId identifies the WebSocket channel