balatro-mod-dev

Balatro Mod Development

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "balatro-mod-dev" with this command: npx skills add liafonx/open-balatro/liafonx-open-balatro-balatro-mod-dev

Balatro Mod Development

Create and debug Balatro mods with Steamodded, Lovely, and SMODS.

Quick Agent Selection

When researching or writing code, spawn the right sub-agent via the Task tool:

Need to find... Use agent Model Search boundary

Game function implementation game-source-researcher

sonnet Balatro_src/ only

SMODS API usage/hooks smods-api-researcher

sonnet smods/ only

How other mods do X mod-pattern-researcher

sonnet Mods/ folder only

Lovely patch syntax lovely-patch-researcher

sonnet lovely files only

Project architecture/exploration project-explorer

sonnet Current project only

Write code per plan code-writer

sonnet Current project only

Run temp script for data script-runner

haiku N/A (execution)

Review code for correctness code-reviewer

opus Current project only

Synthesize multi-source research research-analyst

opus Current project only

Plan complex implementation strategic-planner

opus Current project only

Inspect runtime logs, dumps, compat debug-inspector

sonnet Lovely logs/dumps only

The main agent handles directly: User interaction, small edits (<20 lines), presenting results.

Parallel: When researching DIFFERENT sources — spawn multiple Task calls in one message Sequential: When second query depends on first result

See references/sub-agents.md for the 5-phase workflow, iterative retrieval protocol, and delegation rules.

Repo Type Awareness

Auto-detection: Compare mod manifest author with git remote username.

Get git remote username

git_user=$(git remote get-url origin 2>/dev/null | sed -E 's|.*://[^/]+.git$|\1|' | tr '[:upper:]' '[:lower:]')

Get mod author from manifest (first author, lowercase)

mod_author=$(jq -r '.author[0] // .author // ""' *.json 2>/dev/null | head -1 | tr '[:upper:]' '[:lower:]')

Compare: match = own, no match = fork

[[ "$git_user" == "$mod_author" ]] && echo "own" || echo "fork"

Type Detection Implications

new

Empty repo (no files) Full docs, Logger.lua, localization

own

Author matches git user Full docs, standardize structure

fork

Author differs from git user Minimal changes, temp logs only

File Convention

File Purpose Git

AGENTS.md

Mod structure, functions, dependencies, constraints, Quick Reference (for AI agents) ignored

mod.config.json

File lists for sync/release scripts ignored

docs/knowledge-base.md

Issues & lessons learned ignored

AGENTS.md Purpose: Enable seamless handover between agents. Another agent should quickly understand mod structure, functions, dependencies, constraints, and repo type from a single file.

File Placement Rules

Only these .md files belong in root:

  • README.md , README_zh.md

  • CHANGELOG.md , CHANGELOG_zh.md

  • AGENTS.md

  • LICENSE.md

ALL other .md files MUST go in docs/

External References (No Symlinks Needed)

Access reference code directly via absolute paths. No setup required.

Source Locations (macOS)

Resource Path

Game Source (desktop) ~/Development/GitWorkspace/Balatro_src/desktop/

Game Source (mobile) ~/Development/GitWorkspace/Balatro_src/ios_plus/

Steamodded Source ~/Development/GitWorkspace/smods/src/

Steamodded Lovely ~/Development/GitWorkspace/smods/lovely/

Lovely Docs ~/Development/GitWorkspace/lovely-injector/

Installed Mods ~/Library/Application Support/Balatro/Mods/

Lovely Logs ~/Library/Application Support/Balatro/Mods/lovely/log/

Source Locations (Windows)

Resource Path

Game Source Varies by setup

Installed Mods %APPDATA%/Balatro/Mods/

Lovely Logs %APPDATA%/Balatro/Mods/lovely/log/

Pattern References

Read these files for specific topics:

Topic Reference File

Lovely.toml syntax patterns/lovely-patches.md

SMODS hooks, config, localization patterns/smods-api.md

Desktop vs mobile differences patterns/mobile-compat.md

UIBox, CardArea, draw order patterns/ui-system.md

Game source file map + search tips references/game-files.md

G.GAME, G.STATES, G.P_* globals references/globals.md

Lua/LuaJIT pitfalls, common mod bugs references/lua-gotchas.md

New Mod Setup (type: new)

Templates in ${CLAUDE_PLUGIN_ROOT}/templates/ folder:

File Purpose

agents-md-template.md

AGENTS.md template for standard mods

agents-texture-pack-template.md

AGENTS.md for Malverk texture packs

mod-config-template.json

Script configuration

gitignore-template

Standard .gitignore

logger-template.lua

Centralized logging utility

Meta Files:

File Purpose

mod-json-template.json

SMODS mod manifest ({ModName}.json)

manifest-json-template.json

Thunderstore manifest

User Docs in templates/docs/ :

File Purpose

description-template.md

Concise README for docs/

NEXUSMODS_DESCRIPTION-template.txt

BBCode for NexusMods

knowledge-base-template.md

Issues & lessons learned

Basic Mod Structure (new repos):

{ModName}/ ├── main.lua # Entry point, mod registration ├── config.lua # Config defaults (optional) ├── lovely.toml # Lovely patches (if needed) ├── {ModName}.json # SMODS mod manifest ├── manifest.json # Thunderstore manifest ├── mod.config.json # Script configuration ├── Utils/ │ └── Logger.lua # Centralized logging ├── localization/ │ ├── en-us.lua # English (required) │ └── zh_CN.lua # Chinese ├── assets/ # Sprites, shaders ├── scripts/ # Utility scripts └── docs/ # Documentation

Available Commands (16 total — plugin-bundled, auto-loaded)

  • /balatro-mod-dev:familiar

  • Get familiar with this mod (reads AGENTS.md, maps architecture)

  • /balatro-mod-dev:init

  • Initialize new mod

  • /balatro-mod-dev:sync-mod

  • Start sync with watch mode (run once at start)

  • /balatro-mod-dev:bump-version [patch|minor|major]

  • Increment version, update changelogs

  • /balatro-mod-dev:release

  • Create release packages (auto-detects version from manifests)

  • /balatro-mod-dev:fix-sprites <directory> [--preview]

  • Fix grey borders on sprites

  • /balatro-mod-dev:refactor [focus-area]

  • Review code for redundancy, outdated fallbacks, modularization

  • /balatro-mod-dev:debug

  • Verify fix by checking Lovely logs (auto-detects mod key from repo)

  • /balatro-mod-dev:test [scenario]

  • Run test scenarios and verify mod behavior via Lovely logs

  • /balatro-mod-dev:draft-pr

  • Draft PR message (for forks)

  • /balatro-mod-dev:check

  • Audits project health, scaffolds missing rules

  • /balatro-mod-dev:update-docs

  • Review all docs for accuracy, staleness, duplication, verbosity

  • /balatro-mod-dev:update-plugin

  • Update plugin based on new knowledge

  • /balatro-mod-dev:knowledge

  • Review session work, capture discoveries

  • /balatro-mod-dev:compact

  • Evaluate whether to compact context now

  • /balatro-mod-dev:help

  • List all available commands and agents

Sub-agents (11 total — plugin-bundled)

  • game-source-researcher

  • Find game functions and injection points (sonnet)

  • smods-api-researcher

  • Find SMODS API patterns and usage (sonnet)

  • mod-pattern-researcher

  • Find how other mods implement features (sonnet)

  • lovely-patch-researcher

  • Find Lovely patch syntax and examples (sonnet)

  • project-explorer

  • Extensive codebase exploration (sonnet)

  • code-writer

  • Execute implementation plans, write code (sonnet)

  • script-runner

  • Run temp scripts and return results (haiku)

  • code-reviewer

  • Review code for correctness and edge cases (opus)

  • research-analyst

  • Synthesize findings from multiple researchers (opus)

  • strategic-planner

  • Plan implementation strategy for complex features (opus)

  • debug-inspector

  • Inspect runtime logs, dumps, mod compatibility (sonnet)

Logging

For new/my repos:

Use Utils/Logger.lua (from ${CLAUDE_PLUGIN_ROOT}/templates/logger-template.lua ):

local Logger = require("Utils.Logger") local log = Logger.create("ModuleName") log("info", "Initialized") log("error", "Failed: " .. err)

For forks/others' repos:

Use temp logs only (remove before PR):

pcall(print, "[Debug] checkpoint: " .. tostring(var))

Utility Scripts

Script Purpose

${CLAUDE_PLUGIN_ROOT}/scripts/sync_to_mods.template.sh

Sync mod files to game's Mods folder

${CLAUDE_PLUGIN_ROOT}/scripts/create_release.template.sh

Create release packages

${CLAUDE_PLUGIN_ROOT}/scripts/fix_transparent_pixels.py

Fix grey borders on sprites

Workflow: Debugging

  • Check references/lua-gotchas.md for known pitfalls (FFI cdata, nil scoping, boolean normalization)

  • Check platform (desktop vs mobile)

  • Search game source for function

  • Check other mods for implementations

  • Add logs (Logger.lua for own, temp for fork)

  • Check Lovely logs

  • If fix fails 3+ times: Invoke research-analyst (opus) to synthesize all debugging context

Workflow: Update User Docs

When user says "update all user docs":

  • Review ALL files: README(_zh).md, CHANGELOG(_zh).md

  • Review docs/: description.md, NEXUSMODS_DESCRIPTION.txt

  • Update version in {ModName}.json, manifest.json

  • Ensure EN/ZH consistency

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

openclaw-version-monitor

监控 OpenClaw GitHub 版本更新,获取最新版本发布说明,翻译成中文, 并推送到 Telegram 和 Feishu。用于:(1) 定时检查版本更新 (2) 推送版本更新通知 (3) 生成中文版发布说明

Archived SourceRecently Updated
Coding

ask-claude

Delegate a task to Claude Code CLI and immediately report the result back in chat. Supports persistent sessions with full context memory. Safe execution: no data exfiltration, no external calls, file operations confined to workspace. Use when the user asks to run Claude, delegate a coding task, continue a previous Claude session, or any task benefiting from Claude Code's tools (file editing, code analysis, bash, etc.).

Archived SourceRecently Updated
Coding

ai-dating

This skill enables dating and matchmaking workflows. Use it when a user asks to make friends, find a partner, run matchmaking, or provide dating preferences/profile updates. The skill should execute `dating-cli` commands to complete profile setup, task creation/update, match checking, contact reveal, and review.

Archived SourceRecently Updated
Coding

clawhub-rate-limited-publisher

Queue and publish local skills to ClawHub with a strict 5-per-hour cap using the local clawhub CLI and host scheduler.

Archived SourceRecently Updated