environments-and-secrets

Documents environment tiers, env var catalogs, and secret rotation procedures for Render, Vercel, and Supabase deployments.

1|Updated May 23, 2026
One-click install
npx skills add https://github.com/palfish-t-i-u/palfish-t-i-u-h-th-ng-ver-2 --skill environments-and-secrets-palfish-t-i-u
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: environments-and-secrets
Source: https://github.com/palfish-t-i-u/palfish-t-i-u-h-th-ng-ver-2/tree/main/.claude/skills/environments-and-secrets
Command: npx skills add https://github.com/palfish-t-i-u/palfish-t-i-u-h-th-ng-ver-2 --skill environments-and-secrets-palfish-t-i-u

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Deploying or debugging the PalFish GMV app fails silently when environment variables are missing, because render.yaml declares only a subset of the vars the backend actually reads. This Skill provides the complete env var catalog per service, the render.yaml coverage gap, and step-by-step procedures for rotating leaked secrets or onboarding new developers. ## Core Features & Use Cases - Full env var catalog: Every backend and frontend variable mapped to the file that reads it, with the exact failure mode (503, 401, CORS 400) when missing. - render.yaml gap detection: Lists the 16 vars absent from the Blueprint (CRM, SePay, Zalo, DingTalk, GSheet) that must be added manually in the Render Dashboard. - Rotation and setup procedures: Covers leaked-secret rotation across Render, Vercel, and local .env files, plus local dev setup for backend and frontend. - Use Case: A fresh Render deploy passes the health check but CRM sync returns 503. Use this Skill to identify that CRM_ENCRYPT_KEY and CRM_EXTENSION_INGEST_TOKEN are missing from render.yaml and add them via the Render Dashboard. ## Quick Start Ask the assistant to diagnose why the SePay webhook returns 500 on production and list which environment variables to verify on the Render service.

Frequently Asked Questions about environments-and-secrets

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I fix a 503 error on a FastAPI backend deployed to Render?

A 503 usually means a required environment variable is missing. Check Render Dashboard → Environment for SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY, and feature-specific vars like CRM_ENCRYPT_KEY or SEPAY_API_TOKEN, since render.yaml does not declare all of them.

How do I rotate a leaked secret across Render, Vercel, and local env files?

Generate the new value from the issuing service, then update Render Dashboard environment variables, Vercel environment variables for VITE_* keys, and each developer's local .env files. Trigger a Render redeploy via the deploy script and verify with the /healthz endpoint.

Why does Supabase authentication fail silently with 401 errors?

Legacy eyJ... JWT keys were disabled in favor of sb_secret_ and sb_publishable_ prefixed keys. Any env file still holding an old-format key causes silent auth failures, so verify the key prefix in Supabase Dashboard → Settings → API.

Does render.yaml declare all environment variables the backend needs?

No. render.yaml only declares core vars and PayOS keys; CRM, SePay, Zalo OA, DingTalk, and Google Sheets vars are missing. A Blueprint-only deploy passes the health check but silently breaks CRM sync, webhooks, and notifications.

Why does GOOGLE_SERVICE_ACCOUNT_JSON fail when set as an env var?

The import code calls os.path.isfile on the value, so it only accepts a file path, not inline JSON. On Render, upload the JSON via Secret Files and set the variable to the mounted path such as /etc/secrets/gsheet-sa.json.