Skip to content
Back to skills

Check

ASecurity

Audit the current Fabric mod project (fabric.mod.json, build setup, dependencies, mixins, client/server separation, secrets) and output a prioritized report.

  • 4 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
ai-agentsgojavagitapisecurity

Works with

  • cli
  • api

Security analysis

A100/100

Scanned November 7, 2026

npx -y skills add vvs1off/fabric-skills --skill check --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Check?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Check
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vvs1off-check/badge)](https://www.skillsdirectory.com/skills/vvs1off-check)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: check
description: Audit the current Fabric mod project (fabric.mod.json, build setup, dependencies, mixins, client/server separation, secrets) and output a prioritized report.
argument-hint: "[path to mod project]"
disable-model-invocation: true
---

# /fabric-skills:check - audit this Fabric mod

Audit the Fabric mod in `$ARGUMENTS` (or the current directory if empty). **Read-only**: do not
modify files. Produce a report; offer fixes afterwards.

Use the checklists from `fabric-project-setup`, `fabric-mixins`, `fabric-networking` and
`fabric-release`. For a deep mixin review, delegate to the `mixin-reviewer` agent.

## What to inspect

### 1. Era and versions
- `gradle.properties`, `build.gradle`, `settings.gradle`, wrapper version.
- Era: 26.1+ (plugin `net.fabricmc.fabric-loom`, no `mappings`) vs older (remap plugin +
  Yarn/Mojang mappings). Flag mixtures (e.g. a `mappings` line on 26.1+, `modImplementation` with
  non-remapping Loom, `implementation` for mods with remapping Loom).
- Compare versions with https://fabricmc.net/develop/ for that Minecraft version, if reachable;
  report outdated Loader/Fabric API/Loom (informational, not an error). When mentioning newer
  Minecraft versions, check whether they are **releases or snapshots** (Mojang's
  `version_manifest_v2.json` `latest.release`, or `stable` in meta.fabricmc.net); Fabric API
  Maven metadata also lists snapshot builds and must not be reported as a release.
- `-SNAPSHOT` / `+` dynamic versions (e.g. `loom_version=1.19-SNAPSHOT`) make builds
  non-reproducible; suggest pinning for release builds.
- Java release consistency: `options.release`, `sourceCompatibility`, mixin
  `compatibilityLevel`, `fabric.mod.json` `"java"`.

### 2. fabric.mod.json
- Valid JSON, `schemaVersion: 1`, id format, `"version": "${version}"` with
  `processResources` expansion.
- id matches `loom.mods`, `MOD_ID`, `assets/<id>/`, mixin config names.
- Every entrypoint class exists at that FQCN and implements the right interface
  (`ModInitializer`, `ClientModInitializer`, `DedicatedServerModInitializer`, `ModMenuApi`).
- `environment` matches reality (client-only mod with server code, or vice versa).
- `depends`: `minecraft` range not `"*"` and matches `minecraft_version`; `fabricloader`,
  `java`, `fabric-api` present when used. Optional integrations in `suggests`/`recommends`,
  not `depends`.
- Every mixin config listed exists; client configs have `"environment": "client"`.
- The `icon` path (if set) exists under `src/*/resources`.
- `accessWidener` file exists and is also set in `loom.accessWidenerPath`.

### 3. Client/server separation
- Is `splitEnvironmentSourceSets()` enabled? If not, flag as high severity for non-client-only
  mods.
- Search common code for client-only references:
  `grep -rnE "net\.minecraft\.client\.|com\.mojang\.blaze3d|ClientPlayNetworking|MinecraftClient|KeyMapping|KeyBinding" src/main`
- Client mixin targets (`net.minecraft.client.*`) listed in a common mixin config.
- Payload types registered only in a client initializer.

### 4. Mixins
- List every mixin class, its target and injector types.
- Flag: `@Overwrite`, `@Redirect`, `cancellable` HEAD injections on hot methods, `ordinal`,
  missing `@Unique`/mod-id prefixes, `defaultRequire: 0` or `require = 0`, mixins that could be
  a Fabric API event, non-mixin classes in mixin packages.
- For more than a few mixins, run the `mixin-reviewer` agent and include its findings.

### 5. Networking (if present)
- Payloads use the API generation matching the version; types registered in common init.
- Server receivers validate input (ranges, distance, entity existence, permissions).

### 6. Security and hygiene
- No secrets: grep for `token`, `secret`, `password`, `api_key`, `MODRINTH`, `CURSEFORGE` with
  values in tracked files; no `.env`, keystores, `*.key`.
- `.gitignore` covers `build/ .gradle/ run/ out/ .idea/ logs/ crash-reports/`.
- Gradle wrapper present and committed; `gradlew` has LF line endings.
- Release workflow (if any) uses `${{ secrets.* }}` only, minimal `permissions`, pinned actions.

### 7. Build
- Run `./gradlew build` (this writes only to `build/`) and include the result. If it fails, put
  the first error in the report.

## Report format

```
# Fabric mod audit - <mod name> (<mod id>)
Minecraft <v> | Loader <v> | Fabric API <v> | Loom <v> (<plugin id>) | Java <n> | Mappings <...>
Build: PASS / FAIL (<first error>)

## Critical (will crash or break)
- [file:line] problem -> fix

## Warnings (fragile, incompatible, or wrong-era)
- ...

## Suggestions
- ...

## Looks good
- short list of things checked and fine
```

Rank by severity; cite `file:line` for every finding; give a concrete fix for each. End by
asking which findings the user wants fixed.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.