skills/papertrail/SKILL.md
Query and download in-VM Taskcluster worker logs from SolarWinds Observability (formerly Papertrail) using paperctl v2.0. Use when investigating what a worker process or its OS reported on-host. DO NOT USE FOR provisioning failures where no worker started (use tc-logview) or Azure-side VM lifecycle events (use splunk).
npx skillsauth add jwmossmoz/agent-skills papertrailInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Query and download logs from SolarWinds Observability (formerly Papertrail) using paperctl v2.0.
Scope vs.
tc-logview: Papertrail holds in-VM logs forwarded from the worker host (what the worker process and OS reported).tc-logviewholds Taskcluster's worker-manager and worker-scanner service events in GCP Cloud Logging (provisioning decisions, lifecycle, scan health, Azure-side errors as the service observed them). When a worker never started, never claimed, or vanished mid-task, reach fortc-logviewfirst; reach forpaperctlwhen the worker came up and you need the on-host story. See the/taskclusterskill'sreferences/tc-logview.mdfor the full guide.
Requires SWO_API_TOKEN environment variable or ~/.config/paperctl/config.toml.
Initialize config interactively:
paperctl config init
Download all logs for a system to ~/.cache/paperctl/logs/<system>.txt:
paperctl pull <system-name>
Partial name matching is supported. Use Taskcluster worker IDs directly:
# Matches vm-abc123def.reddog.microsoft.com
paperctl pull vm-abc123def
Pull with time range:
paperctl pull vm-abc123 --since -24h
paperctl pull vm-abc123 --since "2026-01-29T00:00:00" --until "2026-01-29T12:00:00"
Pull to specific location:
paperctl pull vm-abc123 --output ~/logs/worker.txt
paperctl pull vm-abc123 --output ~/logs/ # Uses system name as filename
Pull multiple systems in parallel:
paperctl pull vm-abc,vm-def,vm-ghi --output ~/logs/
Search across all systems:
paperctl search "error" --since -1h
paperctl search "error AND timeout" --since -24h --limit 100
Search specific system:
paperctl search "error" --system vm-abc123 --since -1h
Save search results to file:
paperctl search "error" --since -1h --file errors.txt
paperctl entities list
paperctl entities list --type Host --output json
paperctl entities list --name web-1
paperctl entities show <entity-id>
paperctl entities show <entity-id> --output json
paperctl entities list-types
paperctl config show
SWO search uses text matching with boolean operators. No regex or wildcards.
| Operator | Example |
|----------|---------|
| AND | error AND timeout |
| OR | error OR warning |
| NOT | error NOT debug |
| Exact phrase | "connection refused" |
| Format | Example |
|--------|---------|
| Relative | -1h, -24h, -7d, 2 hours ago |
| ISO timestamp | 2026-01-29T00:00:00Z |
| Natural language | yesterday, last week |
Use --format to change output:
paperctl pull vm-abc123 --format json
paperctl pull vm-abc123 --format csv
paperctl search "error" --output json
Get worker IDs from Taskcluster, then pull logs:
# Get recent workers from a pool
curl -s "https://firefox-ci-tc.services.mozilla.com/api/worker-manager/v1/workers/gecko-t%2Fwin11-64-24h2-alpha" | \
jq -r '.workers | sort_by(.created) | reverse | .[0:3] | .[].workerId'
# Pull logs using partial worker ID
paperctl pull vm-abc123def
paperctl search "error" --since -1h --file errors.txt
paperctl pull vm-abc123 --since "2026-01-29T10:00:00" --until "2026-01-29T11:00:00" --output incident.txt
When a task was claimed but did not produce a durable task log, pull the
worker host logs around the run's started and resolved timestamps:
paperctl pull infra-build-decision-abc123 --since "2026-05-20T15:30:00Z" --until "2026-05-20T16:00:00Z" --output worker.log
rg 'TASK_ID|error starting container|HTTP code 431|task resolved|worker-shutdown|reclaiming task' worker.log
Use the Queue API or Taskcluster UI to confirm the exact workerGroup,
workerId, runId, started, resolved, and reasonResolved. If the
original run has no explicit startup error, check retries and sibling tasks
from the same incident; docker-worker errors can be visible on one worker
but absent on the worker that later resolves as worker-shutdown.
v2.0 switched from Papertrail API to SolarWinds Observability API:
| v1.x | v2.0 |
|------|------|
| PAPERTRAIL_API_TOKEN | SWO_API_TOKEN |
| paperctl systems list | paperctl entities list |
| paperctl groups list | Removed (not in SWO API) |
| paperctl archives list | Removed (not in SWO API) |
| --group option on search | Removed |
| System IDs (integers) | Entity IDs (strings) |
AND / OR / NOT). Quote exact phrases.SWO_API_TOKEN, not the v1.x PAPERTRAIL_API_TOKEN. Old configs will silently fail auth.paperctl pull vm-abc123def will find vm-abc123def.reddog.microsoft.com. Don't bother resolving the full hostname.tc-logview for the worker-manager view, then to splunk for Azure-side events.2026/05/20 15:32:43) when ordering events.Version: Taskcluster proxy ... means the taskcluster-proxy sidecar started. It does not prove the main task container started or ran user code.error starting container or HTTP code 431 are worker host logs. They may not survive in public/logs/live.log, especially when the Taskcluster artifact is a stale live-log reference to a gone worker host.worker-shutdown or the worker stops reclaiming cleanly.development
Download Azure Cost Management exports and query local Parquet/CSV in DuckDB. Use when refreshing local Azure cost caches or writing DuckDB SQL over exports. DO NOT USE FOR live Cost Management API diagnosis; use azure-cost-analysis.
data-ai
Use when creating performance self-reviews from local notes, prior reviews, review prompts, and verified evidence. Helps draft H1/H2, annual, and promotion self evaluations, example answers, and rich review-form paste output. Do not use for routine status or 1:1 summaries; use one-on-one.
tools
Prepare one-on-one/status bullets from ~/moz_artifacts using qmd and copy a topic-organized HTML/RTF list with embedded links to the macOS clipboard. Use when summarizing recent Mozilla work for a manager, 1:1, or status update. DO NOT USE FOR generating raw daily logs; use daily-log.
development
Use when tracing Taskcluster Azure VM startup from worker-manager request through in-VM boot scripts to generic-worker `workerReady` with tc-logview, paperctl, Splunk Web, and Yardstick Prometheus. Applies to Windows worker provisioning latency. DO NOT USE FOR task failure triage (use worker-image-investigation).