CLI Vault // Micro-dispatches.
Quick search articles, topics, and actions
Shaves ~600MB off Node images while keeping npm install fast in CI.
# syntax=docker/dockerfile:1.7
FROM node:22-alpine AS deps
WORKDIR /app
# Cache mount survives layer invalidation — package.json churn no longer re-downloads the world
RUN --mount=type=cache,target=/root/.npm npm ci --omit=dev
…The classic macOS GnuPG pinentry die-off that silently breaks every commit.
When a teammate's CI dies mid-apply and the state lock outlives it.
Custom-columns is fine, but JSONPath gives you raw output you can pipe straight into other tooling.
# Find the exact signing key Git is using
git config --get user.signingkey
# Reload the agent and restart pinentry
gpgconf --kill gpg-agent
gpgconf --launch gpg-agent
…# 1. Identify the lock ID from the error output
terraform plan -lock-timeout=5s
# 2. Inspect who holds it (S3 backend + DynamoDB)
aws dynamodb get-item --table-name terraform-locks --key '{"LockID":{"S":"my-org/prod/tfstate"}}'
…kubectl get pods -A -o jsonpath='{range .items[*]}{.metadata.namespace}{" "}{.metadata.name}{" "}{.status.podIP}{"
"}{end}' | grep -v NAMESPACE
# Filter to one deployment's pods + their nodeName:
kubectl get pods -l app=my-app -o jsonpath='{range .items[*]}{.metadata.name}{" -> "}{.spec.nodeName}{"
"}{end}'