gcp-logs
Skill76 starsChanged 20 days agoApache-2.0View on GitHub
Add these filters to reduce noisy log lines that consume context without providing value: To minimize context consumption, first fetch only the message field: This gives you a quick overview without the full log payload. Once you identify interesting log entries, fetch full details: When you need specific d
We split this skill into the rules it gives an agent
6 rules. About 0 are common, 4 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 46
Add these filters to reduce noisy log lines that consume context without providing value:
- Distinctive: line 90
When you need specific details, use jq or grep to extract:
- Distinctive: line 167
Always start specific: - Search for exact message IDs or error patterns first
- Very specific: line 169
Limit results: - Use --limit to avoid overwhelming context
- Distinctive: line 170
Progressive detail: - Start with message field only, expand as needed
- Very specific: line 171
Time bound queries: - Use --freshness or timestamp filters
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
GCP Logs Query Skill
When to Use
- Investigating relayer, validator, or scraper behavior
- Debugging message processing issues
- Analyzing operational incidents
- Looking for specific errors or patterns in agent logs
Prerequisites
gcloudCLI installed and authenticated- Access to
abacus-labs-devGCP project
Base Query Templates
Relayer (Omniscient)
gcloud logging read 'resource.type="k8s_container" AND resource.labels.project_id="abacus-labs-dev" AND resource.labels.location="us-east1-c" AND resource.labels.cluster_name="hyperlane-mainnet" AND resource.labels.namespace_name="mainnet3" AND labels.k8s-pod/app_kubernetes_io/component="relayer" AND labels.k8s-pod/app_kubernetes_io/instance="omniscient-relayer" AND labels.k8s-pod/app_kubernetes_io/name="hyperlane-agent"' --project=abacus-labs-dev --limit=50 --format=json --freshness=1dValidator
gcloud logging read 'resource.type="k8s_container" AND resource.labels.project_id="abacus-labs-dev" AND resource.labels.location="us-east1-c" AND resource.labels.cluster_name="hyperlane-mainnet" AND resource.labels.namespace_name="mainnet3" AND labels.k8s-pod/app_kubernetes_io/component="validator" AND labels.k8s-pod/app_kubernetes_io/name="hyperlane-agent"' --project=abacus-labs-dev --limit=50 --format=json --freshness=1dScraper
gcloud logging read 'resource.type="k8s_container" AND resource.labels.project_id="abacus-labs-dev" AND resource.labels.location="us-east1-c" AND resource.labels.cluster_name="hyperlane-mainnet" AND resource.labels.namespace_name="mainnet3" AND labels.k8s-pod/app_kubernetes_io/component="scraper3" AND labels.k8s-pod/app_kubernetes_io/instance="omniscient-scraper" AND labels.k8s-pod/app_kubernetes_io/name="hyperlane-agent"' --project=abacus-labs-dev --limit=50 --format=json --freshness=1dNoise Filtering
Add these filters to reduce noisy log lines that consume context without providing value:
-jsonPayload.fields.message="Found log(s) in index range"
-jsonPayload.fields.message="Dispatching get_public_key"
NOT "Instantiated AWS signer"
-jsonPayload.fields.message="Ingesting leaf"
-jsonPayload.fields.message="Message already marked as processed in DB"
-jsonPayload.fields.message="Message destined for self, skipping"
-jsonPayload.fields.message="Message has already been delivered, marking as submitted."
-jsonPayload.fields.message="Popped OpQueue operations"
-jsonPayload.fields.message="Validator returned latest index"
-jsonPayload.fields.message="Found signed checkpoint"
-jsonPayload.fields.return="Ok(None)"
-jsonPayload.fields.message="Fast forwarded current sequence"
-jsonPayload.fields.message="Cursor can't make progress, sleeping"
-jsonPayload.fields.message="fallback_request"
-jsonPayload.fields.message="No message found in DB for leaf index"
-jsonPayload.fields.message="Processor working on message"
-jsonPayload.fields.message="Message destined for unknown domain, skipping"Progressive Query Strategy (Token Efficiency)
Step 1: Fetch Message Field Only First
To minimize context consumption, first fetch only the message field:
gcloud logging read '[BASE_QUERY] AND "[search_term]"' --project=abacus-labs-dev --limit=30 --format='json(jsonPayload.fields.message,timestamp)' --freshness=1dThis gives you a quick overview without the full log payload.
Step 2: Get Full Context for Specific Entries
Once you identify interesting log entries, fetch full details:
gcloud logging read '[BASE_QUERY] AND "[specific_identifier]"' --project=abacus-labs-dev --limit=20 --format=json --freshness=1dStep 3: Extract Specific Fields
When you need specific details, use jq or grep to extract:
gcloud logging read '[QUERY]' --format=json | jq '.[].jsonPayload.fields.error'Common Query Patterns
Search by Message ID
gcloud logging read '[BASE_QUERY] AND "0x[MESSAGE_ID]"' --project=abacus-labs-dev --limit=50 --format=json --freshness=1dSearch for Errors/Warnings
gcloud logging read '[BASE_QUERY] AND severity>="WARNING"' --project=abacus-labs-dev --limit=50 --format=json --freshness=1dSearch by Chain/Domain
gcloud logging read '[BASE_QUERY] AND jsonPayload.spans.domain:"[chain_name]"' --project=abacus-labs-dev --limit=50 --format=json --freshness=1dSearch for Stuck Messages (High Retry Count)
gcloud logging read '[BASE_QUERY] AND jsonPayload.fields.num_retries>=5' --project=abacus-labs-dev --limit=30 --format=json --freshness=1dSearch for Gas Estimation Errors
gcloud logging read '[BASE_QUERY] AND "eth_estimateGas"' --project=abacus-labs-dev --limit=30 --format=json --freshness=1dSearch by App Context
gcloud logging read '[BASE_QUERY] AND jsonPayload.fields.app_context:"[APP_CONTEXT]"' --project=abacus-labs-dev --limit=30 --format=json --freshness=1dTime Range Options
--freshness=1h- Last hour--freshness=1d- Last day--freshness=7d- Last week- Or use explicit timestamps in filter:
timestamp>="2026-01-27T00:00:00Z"
Output Format Options
--format=json- Full JSON (verbose, high context)--format='json(jsonPayload.fields.message,timestamp)'- Specific fields only (efficient)--format='value(jsonPayload.fields.message)'- Just values, no structure
Key Log Fields to Focus On
| Field | Description |
jsonPayload.fields.message | Main log message |
jsonPayload.fields.error | Error details |
jsonPayload.spans[].domain | Chain involved |
jsonPayload.fields.num_retries | Retry count |
jsonPayload.fields.operations | Pending message details |
jsonPayload.span.id | Message ID in span context |
Environment Variations
| Environment | Namespace | Cluster |
| mainnet3 | mainnet3 | hyperlane-mainnet |
| testnet4 | testnet4 | hyperlane-mainnet |
Tips
- Always start specific - Search for exact message IDs or error patterns first
- Use noise filters - The base logs are very noisy; always filter
- Limit results - Use
--limitto avoid overwhelming context - Progressive detail - Start with message field only, expand as needed
- Time bound queries - Use
--freshnessor timestamp filters - Pipe to grep/jq - Post-process large results locally
In this repository49 other files it gives its agents.
- AGENTS.mdAGENTS.md
- add-registry-changesetSkill
- build-docker-imageSkill
- classify-onchain-ownerSkill
- code-reviewSkill
- debug-messageSkill
- debug-rpc-providerSkill
- debug-validator-checkpoint-inconsistencySkill
- denylist-stuck-messagesSkill
- fetch-linear-ticketSkill
- fetch-safe-tx-batchSkill
- find-docker-imageSkill
- fix-merkle-root-mismatchSkill
- fix-rpc-urlsSkill
- hyperlane-message-utilsSkill
- hyperlane-utilsSkill
- inline-pr-commentsSkill
- investigate-merkle-root-mismatchSkill
- investigate-stuck-messagesSkill
- registry-yaml-sort-policySkill
- security-reviewSkill
- self-relay-hyperlane-messageSkill
- set-moonpay-standing-quotesSkill
- start-http-registrySkill
- stop-http-registrySkill
- svm-warp-alt-manageSkill
- svm-warp-program-upgradeSkill
- tob-reviewSkill
- verify-warp-contractsSkill
- warp-balancesSkill
- warp-deploy-fund-deployerSkill
- warp-deploy-init-routeSkill
- warp-deploy-nexusSkill
- warp-deploy-register-routeSkill
- warp-deploy-select-keysSkill
- warp-deploy-send-testSkill
- warp-deploy-update-ownersSkill
- warp-deploy-validate-ownersSkill
- warp-forkSkill
- warp-key-value-expansionSkill
- warp-manage-offchain-quotesSkill
- warp-route-checkSkill
- warp-run-logSkill
- warp-simulate-svm-txsSkill
- warp-update-extendSkill
- warp-update-proposeSkill
- warp-update-resolve-artifactsSkill
- warp-updateSkill
- warp-verify-onchain-configSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

