generation-coverage
GitHub管理模型版本生成覆盖规则,支持添加/移除EcosystemCheckpoints行以控制生成权限,并执行缓存刷新。用于草稿测试或发布后清理。
Trigger Scenarios
Install
npx skills add civitai/civitai --skill generation-coverage -g -y
SKILL.md
Frontmatter
{
"name": "generation-coverage",
"description": "Add, remove or inspect a model version's \"EcosystemCheckpoints\" row — the coverage override that makes a version generatable regardless of publish status — and bust the version cache so the generator sees the change. Use to make a Draft official version testable by moderators, or to drop the override after launch. Called by onboard-generator-model; usable on its own."
}
Generation Coverage
node .claude/skills/generation-coverage/coverage.mjs <command> [flags]
What the row does
GenerationCoverage is a plain view and the one the app reads. It carries both coverage rules as columns — covered (live) and coveredNext (staged) — and the Flipt boolean generation-coverage-next decides which one answers, globally, default off. Its "EcosystemCheckpoints" branch is shared by both rules and 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 — except moderation. The version stays covered even after it is unpublished, but a top-level
m.mode IS NULLmeans anArchivedorTakenDownmodel is covered by no branch at all. For anExternalGenerationversion, 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 an EcosystemCheckpoints row, and what GenerationCoverage reports for both covered and coveredNext. |
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.
Version History
-
b735b6b
Current 2026-09-28 20:27
引入Flipt开关区分主备覆盖列,统一各端逻辑,修复Redis缓存键并更新相关文档与迁移清单。
- c706944 2026-09-23 10:05


