cloud-checkup
Read-only SRE checkup of any GCP project: deterministic probes of the edge, Cloud Run services, 7-day error logs, Cloud Scheduler, alert policies and uptime…
Skill by jpantsjoha
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/jpantsjoha-cloud-checkup
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: devops, cloud, data, security
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Shell scripts
Network hosts it talks to 2
codeload.github.com· found in install commandoauth2.googleapis.com· found in code
Files it touches
~/.claude/skills/cloud-checkup
What's inside
- Skill name
cloud-checkup- Description
- Read-only SRE checkup of any GCP project: deterministic probes of the edge, Cloud Run services, 7-day error logs, Cloud Scheduler, alert policies and uptime checks, Secret Manager and IAM, the data stores and the machine's own scheduled jobs, audited into one fixed status table (LIVE / WARNING / RED / INCONCLUSIVE) with evidence, findings by severity, what could not be checked, and a single OVERALL line delivered as one notification. Parametrised by a per-project manifest, so the same routine runs on every project. Use when the operator says "cloud checkup", "SRE check", "is everything live", "what's healthy / warning / red", "any errors this week", "audit the infra", "weekly checkup", "set up the weekly checkup", before a deploy or demo, or after an incident. Cloud Run first; App Engine and GKE differ only in the serving probes.
- License
- Apache-2.0
- Instructions
- 163 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (10)
- README.md
- SKILL.md
- manifest.example.yaml
- mongodb_atlas.md · modules/
- cloud_checkup.sh · scripts/
- notify.sh · scripts/
- CHECKUP-TEMPLATE.md · templates/
- checkup_prompt.md · templates/
- cron.example · templates/
- launchd.plist.tmpl · templates/
SKILL.md (first lines)
# cloud-checkup
One routine, two entry points: in-session (you are the inspection layer) and headless
(scheduled or on demand). Both fill the same template, so two runs are comparable.
Read-only throughout. It never deploys, never mutates cloud state, never restarts or
unpauses anything.
## Three layers
| Layer | What it does | Survives without the next layer |
|---|---|---|
| 1. Deterministic probes | `scripts/cloud_checkup.sh`: curl, `gcloud ... describe`, `gcloud logging read`, scheduler, monitoring, secrets, IAM, local jobs. Writes a probes file. | Yes. The probes file is the artefact of record. |
| 2. Read-only inspection | Headless `claude -p` (or you, in session) reads the probes, queries the data stores, fills `templates/CHECKUP-TEMPLATE.md` into the report. | Yes. Without it the report is the probes file plus `OVERALL: INCONCLUSIVE`. |
| 3. One notification line | `scripts/notify.sh` posts the `OVERALL` verdict and the report path. | Yes. Suppressed with `CC_NO_NOTIFY=1`. |
Layer 1 exists so the routine still has value when the model is unavailable, rate-limited
or wrong. Never let layer 2 be the only thing that ran.
## Status legend
| Status | Rule |
|---|---|
| 🟢 LIVE | The check passes and that feature had zero errors in the review window. |
| 🟡 WARNING | It serves, but had errors in the window, or is degraded, paused, stale beyond its threshold, or drifted from the source of truth. |
| 🔴 RED | It errors right now, is down, or is halted. |
| ⚪ INCONCLUSIVE | It could not be read from this seat. Say what would be needed. |
**`PERMISSION_DENIED` reads as INCONCLUSIVE, never as zero.** A denied `logging read`
returns no rows; scoring that as "no errors" turns a blind seat into a green light. Every
probe captures stderr and marks the row INCONCLUSIVE on any permission or API error.
INCONCLUSIVE is a capability gap of the seat, not a health signal.
## Identity discipline
The machine's default `gcloud` account drifts between identities, and a stored credential
can mint a token for a different principal than the one you asked for.
1. **Pin `--account` on every call.** The script wraps `gcloud` in a `gc()` helper that
always passes it. Never `gcloud config set account`: it mutates state the operator's
other work depends on, and it survives the run.
2. **Verify the token identity, not the config.** The script mints an access token for the
pinned account and reads the `email` back from
`https://oauth2.googleapis.com/tokeninfo`. If that email is not the pinned account, the
whole cloud plane is INCONCLUSIVE regardless of what the probes returned, because the
reads were made as somebody else. The token goes over stdin, never into argv, and never
into the probes file.
3. **Record the observed default** alongside the pinned account, so drift is visible
without being acted on.
## Manifest
Everything project-specific lives in one YAML file. Copy `manifest.example.yaml` to the
project (`.cloud-checkup.yaml` at the repo root is the convention) and fill it in: project,
region, account, services, public URL and edge routes, expected security headers, log
review window, data stores, local jobs, ticket map, extra rows, notification sink,
schedule. The probe script reads it with `yq` when present, PyYAML next, and a small
built-in parser last; the inspection layer reads the file itself, so richer structures
(data stores, ticket map, extra rows) need no parser support.
## Run it
```bash
CC=~/.claude/skills/cloud-checkup
# In session: probes only, then you fill the template as layer 2.
CC_SKIP_AI=1 CC_NO_NOTIFY=1 CC_MANIFEST=.cloud-checkup.yaml "$CC/scripts/cloud_checkup.sh"
# Headless, full run (probes + inspection + notification).
CC_MANIFEST=.cloud-checkup.yaml "$CC/scripts/cloud_checkup.sh"
```
In-session, after the probes land: read the probes file, query each data store in
`data_stores[]` (see `modules/` for the per-type routine), fill every row of
`templates/CHECKUP-TEMPLATE.md`, compare against the previous report in the report
directory for "Changed since", map findings to `ticket_map`, and end the file with exactly
one `OVERALL:` line. Point `CC_OUT` at a scratch path when running probes-only, so the
stub never lands on the canonical report name. Lead the chat reply with RED rows, then
WARNING, then the `OVERALL` line and the report path. Do not commit; the operator does.
## Schedule it
Weekly is the right cadence: often enough to catch a dead writer before its data expires,
rare enough that the report is read.
- **macOS:** fill `templates/launchd.plist.tmpl`, install to `~/Library/LaunchAgents/`,
`launchctl load` it. `StartCalendarInterval` uses local time, so the hour tracks the
operator's clock through DST with no UTC conversion.
- **Linux and elsewhere:** `templates/cron.example`, or a systemd timer of the same shape.
**Logs never go in `/tmp`.** macOS purges `/tmp` after three days of no access, and it does
it while a long-lived process still holds the descriptors, so the failure that matters is
exactly the one whose log is gone. Both templates put stdout, stderr and the probes files
under `${CC_STATE_DIR:-$HOME/.local/state/cloud-checkup}`.
## Read-only by construction
Layer 2's headless tool grant is a **positive allowlist of exact read-only subcommands**,
not a denylist of dangerous ones. A denylist is a guess about what a future gcloud release
will name its mutating verbs; an allowlist fails closed when that guess is wrong. The list
lives in `scripts/cloud_checkup.sh` (`AI_ALLOW`) and holds only read forms: `gcloud`
`describe` / `list` / `read` / `get-iam-policy`, header-only and status-only `curl`, `git log`
and `git status`, local file reads, and the MongoDB MCP read tools by name (`find`,
`aggregate`, `count`, `explain`, list / schema / index / stats) — never a wildcard, which would
admit the server's insert, update, delete and drop tools. Launch the MongoDB server with
`--readOnly` as well. A short denylist sits behind it as defence in depth, not as the mechanism.
`Write` is the one grant that can change the working tree, and it is bounded by the prompt
(one report path) rather than by the grant. That is the routine's one residual: run the
checkup on a clean tree, and read the report's diff before committing it.
## What NOT to do
Not at any layer, not "just to confirm", not because a fix looks obvious:
- No deploy, no `gcloud run deploy`, no `gcloud builds submit`, no image promotion.
- No mutation of cloud state: no `services update`, no IAM binding, no secret version, no
alert policy or uptime check creation, no `terraform apply`.
- No restart, no `launchctl kickstart`, no `systemctl restart`, no scheduler `resume` orFrom jpantsjoha/ai-native-developer-experience, Apache-2.0.
More from jpantsjoha/ai-native-developer-experience
- 0.641score
using-the-harness
jpantsjoha
Session-start orientation for this team harness.
SkillAFreshness: A★ 13Claude Code +9 - 0.641score
operating-model-bootstrap
jpantsjoha
Bootstrap or harden a project's operating model for mixed human and AI delivery teams.
SkillAFreshness: A★ 13Claude Code +9 - 0.641score
pr-reviewer
jpantsjoha
Review gate for correctness, reuse, and simplification.
SkillAFreshness: A★ 13Claude Code +9 - 0.641score
cloud-expert
jpantsjoha
Cloud guardrails for any vendor workload — Google Cloud (GCP, Vertex AI, GKE), AWS (IAM, EKS, Bedrock), Azure (Entra ID, Policy, AKS), Alibaba Cloud (RAM…
SkillAFreshness: A★ 13Claude Code +9 - 0.641score
system-performance-guardrail
jpantsjoha
Measure, root-cause, fix, verify and record performance contention on a developer machine: cloud-sync daemons (iCloud Drive, OneDrive, Dropbox, Google Drive)…
SkillAFreshness: A★ 13Claude Code +9 - 0.638score
cost-guardrail
jpantsjoha
LLM and cloud cost awareness — model tiering, token budgets, right-sizing, and when a cheaper model suffices.
SkillAFreshness: A★ 13Claude Code +9 - 0.636score
frontend-performance-audit
jpantsjoha
Measure real frontend performance — Core Web Vitals (LCP, CLS, INP), page-load traces, CPU and network throttling, Lighthouse accessibility/SEO scores, and…
SkillAFreshness: A★ 13Claude Code +9 - 0.636score
get-it-done
jpantsjoha
Pursue an agreed goal to a working outcome without waiting: decompose it, re-prioritise as evidence arrives, branch, gate, get an independent review (a…
SkillAFreshness: A★ 13Claude Code +9 - 0.636score
github-manager
jpantsjoha
Use when configuring or optimising GitHub repositories for cost-effective, consistent operations — CI triggers, Actions billing, issue tracking, labelling…
SkillAFreshness: A★ 13Claude Code +9 - 0.636score
mcp-server-scaffold
jpantsjoha
Scaffold and govern an MCP server as a bounded tool seam.
SkillAFreshness: A★ 13Claude Code +9 - 0.636score
spec-first-delivery
jpantsjoha
Force plan, HLD, ADRs, and constraints to exist BEFORE any code is generated.
SkillAFreshness: A★ 13Claude Code +9 - 0.636score
sitrep
jpantsjoha
Synthesise a status, standup, or situation-report from current work state.
SkillAFreshness: A★ 13Claude Code +9
Signals
- Stars
- 13
- Forks
- 4
- Open issues
- 2
- Last commit (this folder)
- Sep 14, 2026 (1 month ago)
- Last release
- Oct 16, 2026 (11 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Apache-2.0
- Website
- jpantsjoha.com
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from jpantsjoha
- 0.641score
using-the-harness
jpantsjoha
Session-start orientation for this team harness.
SkillAFreshness: A★ 13Claude Code +9 - 0.641score
system-performance-guardrail
jpantsjoha
Measure, root-cause, fix, verify and record performance contention on a developer machine: cloud-sync daemons (iCloud Drive, OneDrive, Dropbox, Google Drive)…
SkillAFreshness: A★ 13Claude Code +9 - 0.641score
pr-reviewer
jpantsjoha
Review gate for correctness, reuse, and simplification.
SkillAFreshness: A★ 13Claude Code +9 - 0.641score
operating-model-bootstrap
jpantsjoha
Bootstrap or harden a project's operating model for mixed human and AI delivery teams.
SkillAFreshness: A★ 13Claude Code +9 - 0.641score
cloud-expert
jpantsjoha
Cloud guardrails for any vendor workload — Google Cloud (GCP, Vertex AI, GKE), AWS (IAM, EKS, Bedrock), Azure (Entra ID, Policy, AKS), Alibaba Cloud (RAM…
SkillAFreshness: A★ 13Claude Code +9 - 0.638score
cost-guardrail
jpantsjoha
LLM and cloud cost awareness — model tiering, token budgets, right-sizing, and when a cheaper model suffices.
SkillAFreshness: A★ 13Claude Code +9
Cite this page
cloud-checkup skill. Agent Mart. https://agentmart.dev/skills/jpantsjoha-cloud-checkup (last updated 2026-10-24)