A moderation management toolkit for Civitai, enabling user actions and content reporting through the Civitai tRPC API.

Install

mkdir -p .claude/skills/mod-actions && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/5871" && unzip -o skill.zip -d .claude/skills/mod-actions && rm skill.zip

Installs to .claude/skills/mod-actions

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

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.
215 charsno explicit “when” trigger
Advanced

Key capabilities

  • Manage user states like ban and mute
  • Process reports and appeals
  • Moderate images and generation content
  • Issue and void strikes
  • Report NCMEC/CSAM content
  • Toggle content flags and model status

How it works

It interfaces with the Civitai tRPC API using authenticated requests to perform administrative actions on users, content, and reports.

Inputs & outputs

You give it
Moderation command and target entity
You get back
API-executed moderation action

When to use mod-actions

  • Banning violating users
  • Removing inappropriate content
  • Managing content review queues
  • Handling NCMEC reporting

About this skill

Moderator Actions

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.

Setup

  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.

VariableRequiredDefaultDescription
CIVITAI_API_KEYYes-Your Civitai API key
CIVITAI_API_URLNohttps://civitai.comAPI base URL

Skill Files

FileDomainCommands
query.mjsUser moderationuser, ban, mute, leaderboard, remove-content, dm
strikes.mjsStrike systemget-user, standings, list, create, void
images.mjsImage moderationreview-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.mjsReport handlinglist, set-status, bulk-status, update, appeals, appeal-details, resolve-appeal
generation.mjsGeneration moderationflagged-consumers, flagged-reasons, consumer-strikes, review-strikes, user-generations, restrictions, resolve-restriction, allowlist-add, debug-audit, todays-counts, suspicious-matches
content.mjsContent & trainingmodels, flagged-models, resolve-flagged, model-versions, rescan-model, restore-model, toggle-cannot-promote, toggle-cannot-publish, articles, training-models, approve-training, deny-training, mod-rule
model3ds.mjs3D Models moderationlist, get, files, unpublish, delete, restore, set-nsfw-level, toggle-tos, toggle-poi, toggle-minor, toggle-nsfw, toggle-unlisted
csam.mjsNCMEC/CSAM reportingreports, stats, image-resources, create-report

query.mjs — User Moderation

node .claude/skills/mod-actions/query.mjs <command> [options]
CommandDescription
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, 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"

strikes.mjs — Strike System

node .claude/skills/mod-actions/strikes.mjs <command> [options]
CommandR/WDescription
get-user <userId>READStrike history for a user
standingsREADUser standings (filter: active/muted/flagged)
listREADPaginated strike list with filters
create <userId>WRITEIssue a strike (requires --reason, --description)
void <strikeId>WRITEVoid 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"

images.mjs — Image Moderation

node .claude/skills/mod-actions/images.mjs <command> [options]
CommandR/WDescription
review-queueREADImage review queue
review-countsREADQueue tab counts
moderate <ids> <action>WRITEBlock/unblock images
tos-violation <imageId>WRITEFlag as TOS violation
rescan <imageId>WRITERe-ingest/rescan image
report-csam <imageIds>WRITEReport images as CSAM
poi-tagsREADPerson-of-interest tags
user-images <userId>READAll images for a user
rating-requestsREADNSFW rating review requests
ingestion-errorsREADImages with ingestion errors
resolve-ingestion <id>WRITEResolve ingestion error
downleveledREADDownleveled images
pending-ingestionREADPending ingestion images
toggle-flag <imageId>WRITEToggle image flag

Options: --ids, --action, --review-type, --cursor, --page, --limit, --json, --dry-run

node .claude/skills/mod-actions/images.mjs review-counts
node .claude/skills/mod-actions/images.mjs review-queue --limit 20
node .claude/skills/mod-actions/images.mjs moderate 12345,67890 block --dry-run
node .claude/skills/mod-actions/images.mjs user-images 3879899 --json
node .claude/skills/mod-actions/images.mjs rescan 12345

reports.mjs — Report Handling

node .claude/skills/mod-actions/reports.mjs <command> [options]
CommandR/WDescription
listREADReports by entity type (requires --type)
set-status <reportId> <status>WRITESet report status
bulk-status <status>WRITEBulk update statuses (requires --ids)
update <reportId>WRITEUpdate report with status/notes
appealsREADRecent appeals
appeal-details <id>READAppeal details
resolve-appealWRITEResolve appeal (requires --ids, --entity-type, --status)

Report Entity Types: model, comment, commentV2, image, resourceReview, article, post, reportedUser, collection, bounty, bountyEntry, chat, comicProject

Report Statuses: Pending, Processing, Actioned, Unactioned

Appeal Statuses: Pending, Approved, Rejected

Options: --type, --status, --ids, --entity-type, --internal, --message, --user-id, --start-date, --page, --limit, --query, --json, --dry-run

node .claude/skills/mod-actions/reports.mjs list --type image --limit 20
node .claude/skills/mod-actions/reports.mjs set-status 456 Actioned --dry-run
node .claude/skills/mod-actions/reports.mjs bulk-status Actioned --ids 1,2,3
node .claude/skills/mod-actions/reports.mjs appeals --user-id 3879899
node .claude/skills/mod-actions/reports.mjs resolve-appeal --ids 10,11 --entity-type Image --status Approved

generation.mjs — Generation Moderation

node .claude/skills/mod-actions/generation.mjs <command> [options]
CommandR/WDescription
flagged-consumersREADFlagged generation consumers
flagged-reasonsREADFlagging reasons
consumer-strikes <userId>READConsumer's generation strikes
review-strikes <userId>WRITEMark strikes as reviewed
user-generations <userId>READUser's generated images
restrictionsREADAll generation restrictions
resolve-restriction <id>WRITEResolve restriction (Upheld/Overturned)
allowlist-addWRITEAdd prompt trigger to allowlist
debug-audit <prompt>READTest prompt auditing
todays-countsREADToday's prohibited request counts
suspicious-matchesREADSaved suspicious audit matches

Options: --status <Pending|Upheld|Overturned>, --reason, --start-date, --message, --trigger, --category, --negative-prompt, --user-id, --username, --restriction-id, --page, --limit, --json, --dry-run

node .claude/skills/mod-actions/generation.mjs flagged-consumers
node .claude/skills/mod-actions/generation.mjs consumer-strikes 3879899
node .claude/skills/mod-actions/generation.mjs restrictions --status Pending
node .claude/skills/mod-actions/generation.mjs resolve-restriction 42 --status Upheld --message "Confirmed violation" --dry-run
node .claude/skills/mod-actions/generation.mjs debug-audit "some prompt text"
node .claude/skills/mod-actions/generation.mjs allowlist-add --trigger "girl" --category "age" --reason "False positive"

content.mjs — Content & Training Moderation

node .claude/skills/mod-actions/content.mjs <command> [options]
CommandR/WDescription
modelsREADModels for mod review
flagged-modelsREADFlagged models
resolve-flaggedWRITEResolve flagged models (requires --ids)
model-versionsREADModel versions for mod
rescan-model <id>WRITERe-ingest a model
restore-model <id>WRITERestore deleted model
toggle-cannot-promote <id>WRITEToggle promotion eligibility
toggle-cannot-publish <id>WRITEToggle publish ability
articlesR

Content truncated.

When not to use it

  • Non-moderator accounts
  • Production environments without dry-run testing

Prerequisites

Civitai API key with moderator privileges

Limitations

  • Destructive actions like content removal are permanent
  • Requires moderator-level API permissions

How it compares

It provides a command-line interface for complex moderation workflows that would otherwise require manual API calls or dashboard interaction.

Compared to similar skills

mod-actions side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
mod-actions (this skill)14moReviewAdvanced
pptx3936moReviewAdvanced
nano-pdf632moReviewBeginner
video-downloader1017moReviewBeginner

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

pptx

anthropics

Presentation creation, editing, and analysis. When Claude needs to work with presentations (.pptx files) for: (1) Creating new presentations, (2) Modifying or editing content, (3) Working with layouts, (4) Adding comments or speaker notes, or any other presentation tasks

393763

nano-pdf

openclaw

Edit PDFs with natural-language instructions using the nano-pdf CLI.

63300

video-downloader

ComposioHQ

Downloads videos from YouTube and other platforms for offline viewing, editing, or archival. Handles various formats and quality options.

101255

youtube-transcript

michalparkola

Download YouTube video transcripts when user provides a YouTube URL or asks to download/get/fetch a transcript from YouTube. Also use when user wants to transcribe or get captions/subtitles from a YouTube video.

68277

using-superpowers

obra

Use when starting any conversation - establishes mandatory workflows for finding and using skills, including using Skill tool before announcing usage, following brainstorming before coding, and creating TodoWrite todos for checklists

95205

browser-automation

browserbase

Automate web browser interactions using natural language via CLI commands. Use when the user asks to browse websites, navigate web pages, extract data from websites, take screenshots, fill forms, click buttons, or interact with web applications. Triggers include "browse", "navigate to", "go to website", "extract data from webpage", "screenshot", "web scraping", "fill out form", "click on", "search for on the web". When taking actions be as specific as possible.

39230

Search skills

Search the agent skills registry