add-ecosystem
Add a new ecosystem and base model to basemodel.constants.ts. Use when onboarding a new model…
Comprehensive moderation toolkit: user actions (ban/mute/DM), strike system, image moderation, report handling, generation moderation, content/training moderation, and NCMEC/CSAM reporting. All via Civitai tRPC API.
$ npx -y skills add civitai/civitai --skill mod-actions --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/mod-actionsContext preview
The summary Claude sees to decide when to auto-load this skill.
Comprehensive moderation toolkit: user actions (ban/mute/DM), strike system, image moderation, report handling, generation moderation, content/training moderation, and NCMEC/CSAM reporting. All via Civitai tRPC API.
name: mod-actions description: "Comprehensive moderation toolkit: user actions (ban/mute/DM), strike system, image moderation, report handling, generation moderation, content/training moderation, and NCMEC/CSAM reporting. All via Civitai tRPC API."
Comprehensive moderation toolkit for Civitai. Covers user actions, strike management, image moderation, report handling, generation moderation, content/training moderation, and NCMEC/CSAM reporting.
All scripts use the Civitai tRPC API with Bearer token authentication, ensuring actions go through the proper service layer with full side effects.
1. Copy `.env-example` to `.env` in this skill directory 2. Add your Civitai API key (must belong to a moderator account) 3. Optionally set the API URL (defaults to production)
cp .claude/skills/mod-actions/.env.example .claude/skills/mod-actions/.env # Edit .env and add your API key
**Important:** The API key must belong to a user with moderator privileges.
| Variable | Required | Default | Description | |----------|----------|---------|-------------| | `CIVITAI_API_KEY` | Yes | - | Your Civitai API key | | `CIVITAI_API_URL` | No | `https://civitai.com` | API base URL |
---
| File | Domain | Commands | |------|--------|----------| | `query.mjs` | User moderation | user, ban, mute, leaderboard, remove-content, dm | | `strikes.mjs` | Strike system | get-user, standings, list, create, void | | `images.mjs` | Image moderation | review-queue, review-counts, moderate, tos-violation, rescan, report-csam, poi-tags, user-images, rating-requests, ingestion-errors, resolve-ingestion, downleveled, pending-ingestion, toggle-flag | | `reports.mjs` | Report handling | list, set-status, bulk-status, update, appeals, appeal-details, resolve-appeal | | `generation.mjs` | Generation moderation | flagged-consumers, flagged-reasons, consumer-strikes, review-strikes, user-generations, restrictions, resolve-restriction, allowlist-add, debug-audit, todays-counts, suspicious-matches | | `content.mjs` | Content moderation | models, flagged-models, resolve-flagged, model-versions, rescan-model, restore-model, toggle-cannot-promote, toggle-cannot-publish, articles, mod-rule | | `model3ds.mjs` | 3D Models moderation | list, get, files, unpublish, delete, restore, set-nsfw-level, toggle-tos, toggle-poi, toggle-minor, toggle-nsfw, toggle-unlisted | | `csam.mjs` | NCMEC/CSAM reporting | reports, stats, image-resources, create-report |
---
node .claude/skills/mod-actions/query.mjs <command> [options]
| Command | Description | |---------|-------------| | `user <id\|username>` | Look up user info | | `ban <id\|username>` | Toggle ban status | | `mute <id\|username>` | Toggle mute status | | `leaderboard <id\|username> <true\|false>` | Set leaderboard eligibility | | `remove-content <id\|username>` | Remove all user content (DESTRUCTIVE) | | `dm <id\|username>` | Send a DM (requires `--message`) |
**Options:** `--json`, `--dry-run`, `--reason <code>`, `--message <text>`, `--internal <text>`
**Ban Reason Codes:** SexualMinor, SexualMinorGenerator, SexualMinorTraining, SexualPOI, Bestiality, Scat, Nudify, Harassment, SpamBot, LeaderboardCheating, BuzzCheating, RRDViolation, Other
node .claude/skills/mod-actions/query.mjs user 3879899 node .claude/skills/mod-actions/query.mjs ban 3879899 --reason Other --message "ToS violation" --dry-run node .claude/skills/mod-actions/query.mjs dm 3879899 --message "Please review our guidelines"
---
node .claude/skills/mod-actions/strikes.mjs <command> [options]
| Command | R/W | Description | |---------|-----|-------------| | `get-user <userId>` | READ | Strike history for a user | | `standings` | READ | User standings (filter: active/muted/flagged) | | `list` | READ | Paginated strike list with filters | | `create <userId>` | WRITE | Issue a strike (requires `--reason`, `--description`) | | `void <strikeId>` | WRITE | Void a strike (requires `--reason`) |
**Strike Reasons:** BlockedContent, RealisticMinorContent, CSAMContent, TOSViolation, HarassmentContent, ProhibitedContent, ManualModAction
**Options:** `--reason`, `--description`, `--points <1-3>`, `--entity-type`, `--entity-id`, `--report-id`, `--expires-days`, `--status <Active,Expired,Voided>`, `--sort <points|score|lastStrike|created>`, `--sort-order <asc|desc>`, `--flagged-for-review`, `--has-active-strikes`, `--page`, `--limit`, `--json`, `--dry-run`
node .claude/skills/mod-actions/strikes.mjs get-user 3879899 node .claude/skills/mod-actions/strikes.mjs standings --has-active-strikes --limit 10 node .claude/skills/mod-actions/strikes.mjs create 3879899 --reason BlockedContent --description "Uploaded prohibited content" --points 1 --dry-run node .claude/skills/mod-actions/strikes.mjs void 42 --reason "False positive from scanner"
---
node .claude/skills/mod-actions/images.mjs <command> [options]
| Command | R/W | Description | |---------|-----|-------------| | `review-queue` | READ | Image review queue | | `review-counts` | READ | Queue tab counts | | `moderate <ids> <action>` | WRITE | Block/unblock images | | `tos-violation <imageId>` | WRITE | Flag as TOS violation | | `rescan <imageId>` | WRITE | Re-ingest/rescan image | | `report-csam <imageIds>` | WRITE | Report images as CSAM | | `poi-tags` | READ | Person-of-interest tags | | `user-images <userId>` | READ | All images for a user | | `rating-requests` | READ | NSFW rating review requests | | `ingestion-errors` | READ | Images with ingestion errors | | `resolve-ingestion <id>` | WRITE | Resolve ingestion error | | `downleveled` | READ | Downleveled images | | `pending-ingestion` | READ | Pending ingestion images | | `toggle-flag <imageId>` | WRITE | Toggle image flag |
**Options:** `--ids`, `--action`, `--review-type`, `--cursor`, `--page`, `--li
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…