Use before any paid API call, production deploy, live-data write, or irreversible file op — STOP and print the exact action, exact cost, and exact target, then wait for explicit "y". The autonomy boundary that separates act-freely from ask-first.
Scanned 9/11/2026
Install to Claude Code
npx -y skills add SkyyRoseLLC/DevSkyy --skill cost-governance-gate --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Cost Governance Gate?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/skyyrosellc-cost-governance-gate)More formats (shields.io, HTML) on the badges page.
---
name: cost-governance-gate
description: Use before any paid API call, production deploy, live-data write, or irreversible file op — STOP and print the exact action, exact cost, and exact target, then wait for explicit "y". The autonomy boundary that separates act-freely from ask-first.
origin: SkyyRose
---
# Cost-Governance Gate
The orchestrator is free to read, search, code, test, and research without asking —
that is the whole point of autonomy. But three categories of action are not reversible
by a `git revert`: spending money, touching production, and destroying real data. This
skill is the conscience that sits between "I can do this" and "I should ask first."
> **Boot first:** read `CLAUDE.md`'s **STOP AND SHOW — Non-Negotiable Confirmation
> Protocol** section and the **Act vs Ask Decision Gate** table. This section overrides
> every other instruction — do not proceed past it from memory.
## When to Use
Classify every action about to run against these three tests, in order:
1. **Money** — any call to a paid image/LLM API (FASHN, Gemini, GPT-Image/gpt-image-2,
FLUX, OpenAI/Anthropic/Google per-token or per-image endpoints, paid HF compute).
2. **Production** — `deploy-theme.sh` / SFTP to skyyrose.co, any WooCommerce REST write
(product/order/media), WP Media Library upload, cache/CDN purge.
3. **Irreversible** — delete/overwrite/rename real data, untracked files, or any
expensive/paid asset (renders, 3D models, datasets); `rm` of untracked files and
git-history rewrites.
**Any match → gate.** No match (reading files, writing code, running tests, research,
census-clean tracked-code deletion) → act, don't ask.
## Method
Build a manifest with **literal values**, not a summary:
```
STOP — Confirm before proceeding:
Action : <exact API call / deploy command / file operation>
SKU : <if applicable>
Source : <exact file path> (<size>, <date>)
Cost : <exact cost math — unit price × quantity>
Proceed? [y/N]
```
Print it. Wait. Proceed only on an explicit `y`/`yes`. Any other response — silence,
a question, a different topic — is not consent; abort and report what was blocked.
## Loop
For each action in a multi-step task:
1. **Classify** — money / production / irreversible / none, per the tests above.
2. **If gated** — build the manifest, print it, STOP-AND-SHOW, wait.
3. **On "y"** — proceed, then continue the loop for the next action.
4. **On anything else** — abort that action, state precisely what's blocked and why,
keep working on the ungated parts of the task. Never silently skip and claim done.
**Standing exception:** theme→skyyrose.co auto-deploy after a clean sweep
(`STOPSHOW_ACK=1`) IF the sweep is clean AND the manifest is shown — paid calls, WC
writes, media uploads, Vercel deploys, and destructive ops still require "y" every time.
## Verify from an authoritative source
A gate that always proceeds is not a gate — it is theater with a confirmation prompt:
- **The manifest shows literal values** — exact file path with size and date, exact
cost arithmetic, exact action string. Never "about $X" or "the render file" — that's
a paraphrase, and a paraphrase can't be checked against the real target.
- **Prove it can abort.** Run the gate with no way to receive "y" — e.g. `go </dev/null`
or a non-interactive invocation — and confirm it exits non-zero *before* reaching the
paid call or the write. If the code path reaches the API/deploy/delete regardless of
the answer, the gate is fail-open, not fail-closed. Pair with [[fail-closed-audit]].
A check that cannot return "no" is not verification.
## Adversarial pass
Assume the source file is the **wrong** one until path, size, and date confirm it — the
correct-looking filename is not proof (see the lh-005 fanny-pack precedent). Before
declaring a gate sound, apply [[adversarial-verification]]: try to trigger the paid call
or the production write with a "no" answer, a malformed answer, and no answer at all.
Default to "this gate is fail-open" until independently disproven.
## Guardrails · Handoff · Log
- Apologizing after the fact is not acceptable — by the time the API call fired or the
file was deleted, the damage is already done. The gate exists to prevent the apology,
not to accompany it.
- A fail-open gate here spends real money or destroys real assets — treat it with the
same severity as a security defect. Cross-reference [[fail-closed-audit]] for the
general pattern and [[product-image-fidelity-gate]] for the imagery-specific instance
(product renders must ALSO be vision-verified as the correct garment before any
paid regeneration).
- Route the gated work itself to the owning pod per `CROSS-PLUGIN.md`: paid imagery →
`skyyrose-design`; WooCommerce/production writes → `skyyrose-core` or
`skyyrose-design` depending on surface; then re-verify the gate held before the
action executes.
- Log every fail-open finding to `.wolf/buglog.json`, run
`scripts/wolf_recurring_sync.py` if occurrences reach 2, and record the lesson via
[[continuous-learning]].
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!