add-ecosystem
Add a new ecosystem and base model to basemodel.constants.ts. Use when onboarding a new model…
Runs the two no-gate review lanes over everything this session touched, consolidates them, and APPLIES the fixes: comment-review (comment necessity + false claims) and docs-drift-review (docs the session made wrong). Session-scoped, not segment-scoped. Use partway through a long
$ npx -y skills add civitai/civitai --skill cleanup --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/cleanupContext preview
The summary Claude sees to decide when to auto-load this skill.
Runs the two no-gate review lanes over everything this session touched, consolidates them, and APPLIES the fixes: comment-review (comment necessity + false claims) and docs-drift-review (docs the session made wrong). Session-scoped, not segment-scoped. Use partway through a long
name: cleanup description: "Runs the two no-gate review lanes over everything this session touched, consolidates them, and APPLIES the fixes: comment-review (comment necessity + false claims) and docs-drift-review (docs the session made wrong). Session-scoped, not segment-scoped. Use partway through a long session, and before opening a PR."
Runs **`comment-review`** and **`docs-drift-review`** over the whole session's work, consolidates them into one list, and **applies the fixes** — the lanes produce exact replacement text, so a run that stops at a list has done the expensive half and skipped the useful one.
| Agent | Reviews | | --- | --- | | `comment-review` | Comments: still true? earns its place? said in the fewest words? | | `docs-drift-review` | Docs the session made wrong — stale paths, done checklist items, contradictions — plus padding |
Both lanes are read-only and neither has an automated gate — comments aren't type-checked and docs are never executed, so typecheck, lint, prettier and every test suite pass over both. That is the whole reason this exists.
**These two lanes are pre-authorised.** Running them needs no separate permission, and neither does re-running one that goes idle. That covers these two only; everything else about spawning is unchanged.
This is what makes it different from `civitai-review` and `svelte-review`, which scope to a slice of work. Here the scope is everything that has happened since the session started:
git log --oneline origin/main..HEAD # commits made this session git diff --stat origin/main..HEAD # their combined effect git status --short # plus whatever is still uncommitted
🔴 **A shared worktree may contain someone else's work.** More than one agent can be editing the same tree, and files you never touched will show up in `git status`. Before spawning, separate what this session did from what it did not, and pass only the former. Reviewing another agent's half-finished edits produces findings nobody asked for and can send them backwards.
If unsure whether a file is yours, say so and leave it out — a named exclusion is fine, a wrong inclusion is not.
Give each agent the file list and the commit range. They need different things beyond that:
one-line note, so it needs to know which lines are new.
symbols removed, scripts and env vars added or retired, commands whose flags changed, checklist items the session completed. That list is its highest-value input and it cannot recover all of it from a diffstat.
Serial is the safe default. Two at once is fine when the session is small.
One ranked list, not two reports.
non-finding is a new defect.
else, because both are read as authoritative and the second is an instruction that gets followed.
paraphrasing it is how the next drift starts.
**Apply them.** Both lanes return exact replacement text, and a consolidated list handed back unapplied is a to-do the next session inherits without the context that produced it. Fix everything you did not disprove in step 3, then say what you applied and what you deliberately left.
Ask first only when a finding needs a decision you cannot make — a comment whose fix is a rename, a doc whose correct value you cannot verify from the repo (whether a migration was applied, whether a box should be ticked). Reopen a box rather than assert something you could not check, and say so.
**Then verify each edit landed.** Do not trust the write — re-read or grep for the new text. Three ways these fail silently:
minutes behind the tree. An anchor that no longer matches is normal, not a sign the finding is wrong — re-read that region and re-derive the edit.
Prefer one file per write, or verify per file. This is the failure that quietly drops half a lane.
and the check; see the shared-worktree warning in step 1.
When applying doc fixes, keep them in the **same commit as the change that caused the drift** where that commit is still unpushed — several trackers here state that rule for themselves, and a doc fix landing separately is how a checklist ends up describing a state that never existed.
Optional findings about **pre-existing** drift are still worth applying when they touch what the session changed: a contradiction two hundred lines from your edit still points the next reader at the wrong state. Say which ones were not yours.
Re-run `typecheck` and the suites covering the touched files afterwards — a comment edit cannot break a build, but these lanes also move code-adjacent text (test names, doc blocks in `.ts`), and the point of the pass is that nothing else checks them.
Do not commit unless asked.
Repo: civitai/civitai
Add a new ecosystem and base model to basemodel.constants.ts. Use when onboarding a new model…
Wire an existing ecosystem into the generation system. Adds generation support to…
Author a prompt-enhancement system prompt for a new ecosystem and register/update it on the…
Add a new trainable base model to BOTH trainers end-to-end — the in-app trainer (main Next.js…
Wire an existing ecosystem into the LoRA training system so it appears as a trainable base…
Deterministically drive a first-party Civitai App Block in the operator's browser and produce…