Generation Coverage
node .claude/skills/generation-coverage/coverage.mjs <command> [flags]
What the row does
GenerationCoverage is a plain view. Its first branch covers any version listed in "EcosystemCheckpoints", and it applies no status check. So:
- A
Draftversion with a row can be generated, but only by moderators and the model's owner.getResourceCanGeneratelets those two through the private check and refuses everyone else. This is how an official version gets tested before it is published. - The row overrides everything else. The version stays covered even after it is unpublished. For an
ExternalGenerationversion, branch 2 covers it once published, so removing the row after launch is what lets a later unpublish remove coverage. So far every row has been kept.
The full coverage rules are in docs/features/generator-model-onboarding.md.
Commands
| Command | What it does |
|---|---|
status --version <id> | Whether the version has a row, and whether GenerationCoverage reports it covered. |
add --version <id> --name <label> [--writable] | Inserts the row, then busts the cache. Idempotent. |
remove --version <id> [--writable] | Deletes the row, then busts the cache. |
bust --version <id> [--writable] | Only the cache bust (modelVersion.bustCache). |
--nameis a free-text label with no behaviour attached. Existing rows use the base model's display name, e.g.Ideogram 4.0.- The cache bust is part of
addandremove.resourceDataCachesits in front of the view with a one-hour TTL. Without the bust, the generator keeps reporting the old coverage for up to an hour.
Setup and permission
- Database: reads and writes go through the
postgres-queryskill (--prodby default, plus--writableforaddandremove). Its production connection has to be configured. - Choosing the database: pass
--db devfor the dev database. WhenCIVITAI_API_URLisn't civitai.com or civitai.red, the script refuses to guess which database goes with it. - API key: the cache bust uses
CIVITAI_API_KEYfrom.claude/skills/mod-actions/.env, and it must belong to a moderator.
Every write is a dry run unless you pass --writable. Ask the user before each --writable call. It writes to the production database.