← ClaudeAtlas

digitalocean-app-platformlisted

Lints DigitalOcean App Platform app specs (app.yaml / doctl apps spec JSON / digitalocean_app Terraform) for security, reliability, correctness, and sizing anti-patterns — plaintext secrets, missing health checks, single-instance services, dev databases in production, port mismatches, overlapping ingress routes, conflicting git/image sources, deprecated routes, unknown instance sizes, and app/database region mismatch. Use when working with DigitalOcean App Platform, app.yaml, .do/app.yaml, doctl apps, the digitalocean_app Terraform resource, or reviewing an App Platform deployment for problems.
Goodsmileduck/claude-registry · ★ 1 · DevOps & Infrastructure · score 74
Install: claude install-skill Goodsmileduck/claude-registry
# DigitalOcean App Platform Reviews App Platform app specs for the mistakes that cause downtime, leaked secrets, and broken routing. Ships a stdlib-only validator, `do_app_spec_lint.py`, that ingests the spec as JSON (recommended), the block-YAML DO emits, or the `digitalocean_app` Terraform resource, and reports findings with a rule id, severity, and a one-line fix. ## When to invoke - Reviewing or authoring an `app.yaml` / `.do/app.yaml` / `digitalocean_app`. - A service has downtime on deploy or flaps with no warning (health check / HA). - DigitalOcean warns that `routes` is deprecated. - A credential may be sitting in an env `value` in plaintext. - Ingress routing behaves unexpectedly (overlapping prefixes). ## Cross-cutting rules 1. **Prefer JSON input.** `doctl apps spec get <app-id> --format json` is the most reliable input; the YAML path is a subset parser and rejects anchors, flow collections, and folded/literal scalars. 2. **Never put a literal secret in an env `value`.** Use `type: SECRET` and a `${VAR}` substitution. Values containing `${...}` (GitHub secrets, `${db.X}` bindable refs, `${APP_URL}` app-wide vars) are references, not literals. 3. **The app spec is the source of truth.** App Platform reconciles to the spec on every deploy; fix the spec, not the running app. ## Running the validator ```bash # JSON (recommended) doctl apps spec get <app-id> --format json > spec.json python3 scripts/do_app_spec_lint.py spec.json # YAML subset, or