sboxskins.gg
sboxskins.gg — S&box Skin Market Tracker
Live S&box cosmetics market data — prices, order books, supply, and trends from the Steam Community Market. The go-to tracker for every sbox skin.
sbox-cookbook — a deep, code-grounded knowledge base of how to actually build games in s&box, mined from real, shipped, open-source s&box games and the modern engine source. So the AI reaches for proven, shipped patterns — real inventories, economies, save systems, shops, gacha, progression, multiplayer netcode, whole genre playbooks — instead of guessing./plugin marketplace add LouSputthole/Sbox-Claude — registers the repo as a plugin source/plugin install sbox-claude — installs the plugin/reload-plugins)sbox-cookbook, a code-grounded recipe library of how real s&box games are built (the #1 reason to use this — see below). Along with Live S&box API look up.sbox-cookbook is a massive, code-grounded knowledge base that answers exactly those questions — built by mining real, shipped, open-source s&box games plus the modern engine repos, then distilling them into recipes that cite real source you can open. It's a router: ask "how do I build a tycoon / an inventory / a save system?" and it loads the grounded how-to for that problem.
You: "Make a player controller with WASD, mouse look, double-jump, and a flashlight." Claude: writes the script, adds the component, wires the input, sets up the spotlight — then aims a camera, screenshots it, and checks its own work.
You: "Build me an inventory system with a hotbar." Claude: opens the cookbook's inventory recipe, builds it the way real games do (host-authoritative items, networked, drag-and-drop UI) — then runsnetworking_lintandinspect_networked_objectto confirm it actually replicates.
search_docs / get_doc_page / list_doc_categories) and inspects the real loaded SDK by live reflection (describe_type / search_types / get_method_signature — every type, method, and property the editor actually has). So it works from the current API and real docs instead of stale guesses — a big reason the generated C# actually compiles. [Button] driver for any component.inspect_networked_object), lint a project for multiplayer footguns (networking_lint), catch scene-setup mistakes (scene_validate), read/diff save files (save_inspect), read services/leaderboards (services_query), and drive named input actions in play mode (simulate_input). The AI can now verify multiplayer, saves, and scenes instead of hoping.restart_editor) to recompile and apply changes.sbox from npm) | 199 tools to drive the s&box editor — GameObjects, scripts, scenes, components, physics, networking, UI, world-gen, lighting & atmosphere, characters, scene layout, navmesh & spatial queries, particles, animation, NPC brains, playable-game scaffolds, networking & scene inspection/lint, save & services queries, scatter & object utilities, self-diagnosis, console/C# execution, live docs search, type discovery, debug-draw visualization, playtest time-scale & profilersbox-build-feature | Codifies the screenshot-driven iteration workflow — bridge check, brainstorm gate, API research, hotload verify, screenshot read. Prevents the "guess and check" loopsbox-api | Schema-grounded s&box API knowledge — Unity→s&box translation table, the Ten Rules, and curated component/UI/networking/physics references. Stops Unity-pattern hallucination; repointed to verify signatures via the bridge's live describe_type. sbox-cookbook | A master router of code-grounded recipes mined from 51 current (2026) open-source s&box games + the modern engine repos -- 11 engine, 18 system, and 20 genre references. Ask "how do I build a tycoon / an inventory / a save system?" and it routes to a grounded how-tosbox-scaffold-game | Turns one ask into a playable starter scene (first-person preset)sbox-setup | A ~30-second onboarding wizard — verifies the bridge, detects your installed libraries, recommends a first movesbox-game-dev | Optional specialist for handing off self-contained game-dev tasks add_lipsync -- wire up Sandbox.LipSync, the component Facepunch shipped 2026-07-01 (the lipsync/viseme Sound Editor update): drives a SkinnedModelRenderer's facial morphs from a playing sound. One call adds LipSync, wires the renderer (same GameObject or rendererId), and optionally binds audio -- an existing sound component, or a new SoundPointComponent loaded from a .sound path -- plus morphScale / morphSmoothTime tuning. Morphs animate at runtime while the sound plays (verify in play mode via capture_view). New LipSyncHandlers.cs; tool lives in characters.ts.create_round_state_machine (5x demand -- the top ask) -- the full state-machine beyond create_round_phase_machine: a sealed manager singleton ([Sync(SyncFlags.FromHost)] StateIndex, index-wrap advancing, CanEnter() skip) driving an abstract RoundState base (Begin/Tick/OnTimeUp/Finish lifecycle, per-state [Sync] TimeUntil) plus N sealed named-state stubs that auto-attach on start. Transitions announce via a static event + [Rpc.Broadcast] mirror with per-index dedupe (never double-fires; [Sync] index is the late-joiner reconcile). New RoundStateMachineHandlers.cs + roundstate.ts.add_interaction_station -- a one-occupant IPressable station (crafting bench / shop till / arcade cabinet): occupancy held as a [Sync(FromHost)] Guid (GameObjects aren't [Sync]-able), client Press() routed host-side via [Rpc.Host], a reservation grace window (TimeUntil) for the last user, an optional unlock-level gate via a static ResolveUserLevel hook, and a static OnStationOpened event to open your overlay UI. New InteractionStationHandlers.cs + stations.ts.create_event_director -- a generalized L4D-style pacing director: interval roll (host-only), cumulative-weight pick over EventPrefabs + parallel Weights, active-set dedupe, MaxActive cap, and a generated *TimedEvent companion so every spawned event self-destructs after EventLifetime. RollInterval() is the documented adaptive-pacing extension point. New EventDirectorHandlers.cs + director.ts.create_save_slots -- the multi-slot companion to create_save_system: a saveslots.json manifest (per-slot Used/Name/SavedAtUnix/PlaytimeSeconds -- the slot-picker read) + per-slot payload files over FileSystem.Data, versioned POCO with delete-on-version-mismatch, and optional GUID scene reconciliation (sceneReconciliation: true -- tombstone destroyed objects, reposition survivors). New SaveSlotsHandlers.cs + saveslots.ts.debug_draw_line / debug_draw_ray / debug_draw_box / debug_draw_sphere / debug_clear — world-space debug primitives on a NotSaved ClaudeDebugDraw holder; render via Gizmo.Draw in the editor viewport and Scene.DebugOverlay in play (the latter capturable via capture_view). Visualize raycast hits / overlap volumes / trigger bounds / NPC sight ranges / patrol paths. Live-verified both render paths.take_screenshot/screenshot_from (the gizmo pass isn't in that camera render) — use capture_view in play mode to see them through the bridge.set_time_scale — play-mode time control (Scene.TimeScale): 0 pause, 0.1 slow-mo, 2+ fast-forward. Errors outside play mode. Returns applied + previous.get_profiler_stats — read-only Sandbox.Diagnostics.PerformanceStats dump: FPS, frame/GPU ms, allocations, memory, exceptions, per-category timings averaged over frames.debug_draw_* and run_tests (plan: docs/plans/2026-06-17-unity-carryover-meta-tools.md) still pending.create_leaderboard_panel -- scaffold a Razor PanelComponent leaderboard bound to Sandbox.Services.Leaderboards (Get/Refresh(CancellationToken) -- CancellationToken required, verified live): fetch cooldown, BuildHash override, long->int rank cast. The first scaffold that emits both a .razor and a .razor.scss; passes razor_lint by construction. Compile-verified live.create_inventory -- slot-based inventory: parallel ItemIds/Counts lists, stack-first TryAdd with rollback, TryRemove/CountOf/Move/Clear, static OnChanged. The largest SYSTEMS table in the 51-game corpus (8 games) now has a scaffold. Compile-verified live.create_stat_modifier_system -- Set->Add->Mult stat engine: generated {name}Stat enum, modifiers keyed by source for clean removal, priority resolution, OnStatChanged. The substrate for the entire progression-upgrades corpus (8 games). Compile-verified live.create_placement_mode -- two-phase ghost->commit builder: client-local ghost (NetworkMode.Never, tinted), camera.ScreenPixelToRay mouse ray (API verified -- GetMouseRay does not exist on this SDK), grid snap, host-side re-validation + NetworkSpawn commit. Compile-verified live.create_networked_player moveSpeed param now actually used (was silently ignored); atomic temp+rename IPC response writes (poller can never read a half-written response); get_all_properties unused includeInherited param removed from schema; stale MathX-only comments corrected in scaffold generators.Board.Refresh needs CancellationToken, GetMouseRay does not exist (ScreenPixelToRay is real), inventory empty-string escaping, leaderboard rank cast. All caught by generate->hotload->compile-check, not by review.create_interactable -- Component.IPressable scaffold: Press/Look/Hover/Blur/CanPress/GetTooltip + IsProxy guard. The interaction primitive every genre recipe depends on. Compile-verified live.create_weighted_loot_table -- parallel Names/Weights lists, cumulative-weight Roll(), optional pity via PityAfter. The canonical weighted-pick that 7 corpus games hand-rolled independently. Compile-verified live.sandbox_lint -- pre-compile whitelist scan of Code/*.cs: flags Array.Clone() (still blocked), System.Net.*, other known-blocked BCL members with file+line + fix suggestion. Catches whitelist errors before hotload, with a line number.create_save_system -- versioned POCO + FileSystem.Data.WriteJson/ReadJsonOrDefault, dirty-flag autosave, clamp-on-load Sanitize(), delete-on-version-mismatch, IsProxy guard. The #1 corpus demand (7x). Compile-verified live.razor_lint -- static scan of .razor/.razor.scss for Razor transpiler footguns: switch-expressions in @code, non-ASCII in @code, PanelComponent missing BuildHash, root type-selector SCSS. The "valid code, opaque crash" bug class.copy_asset_with_dependencies -- copies an asset + full dependency closure (Editor.Asset.GetReferences(deep:true)), shadow-guards both dependency paths and destination against core trees (models/citizen, models/dev, materials/dev, materials/default). Kills gotchas #4 and #5 (ERROR mesh + endless recompile from shadowing).scripts/audit-parity.mjs (TS<->C# parity + 4-way version lock) + .github/workflows/ci.yml (runs on push/PR to main).scripts/check-csharp-syntax.py (tree-sitter pre-sync parse of all .cs addon files; known FP on CreateSaveSystemHandler $@-template region -- treat advisory).System.Math and System.MathF NOW COMPILE in s&box game code on the current SDK -- the old "MathX only" rule was stale. Array.Clone() is still blocked. CLAUDE.md and docs/BRIDGE_GOTCHAS.md corrected; sandbox_lint tuned accordingly.create_round_phase_machine — scaffold a host-authoritative [Sync(SyncFlags.FromHost)] phase machine: a CurrentPhase enum cycled on a per-phase TimeUntil timer (host-only), per-phase duration [Property]s, a Loop toggle, a StartPhase(Phase) host-jump, and a static OnPhaseChanged event that fires uniformly on host + proxies. Round/match flow, day-night gates, match phases. Generated code compile-verified live.create_day_night_clock — scaffold a host-authoritative time-of-day clock: [Sync(SyncFlags.FromHost)] TimeOfDay (0–24) + Day advancing by Time.Delta, IsDay/IsNight from sunrise/sunset hours, and static OnNewDay / OnDayNightChanged events. Generated code compile-verified live.create_economy_wallet, these form a "game director" trio (currency + round-flow + time). The remaining ~180 mined tool ideas stay queued in docs/TOOL_BACKLOG.md.CORPUS-INDEX.md.invoke_method — call a component method by name with arguments (reflection + coercion, matched by name + arg-count); the args-capable companion to invoke_button.ensure_input_action — add a custom input action to the project .sbproj (Metadata.InputSettings.Actions[]) so Input.Pressed("X") resolves (restart to take effect in play mode).drive_player / drive_player_status (EXPERIMENTAL) — drive the active PlayerController directly across play-mode frames (sets EyeAngles + analog wish state by reflection + holds a named action down so Input.Pressed catches an edge). A partial answer to "the bridge can't synthesize gameplay input" — still no substitute for a human playtest (see docs/BRIDGE_GOTCHAS.md #1).create_economy_wallet — scaffold a host-authoritative [Sync(SyncFlags.FromHost)] currency component (AddMoney/TrySpend/SetMoney/CanAfford + OnMoneyChanged). The first of the mining-surfaced scaffolds; generated code compile-verified live. The v1.11.0 queue of ~180 more mined tool ideas is in docs/TOOL_BACKLOG.md.set_transform flexible scale (number / "x,y,z" / object); create_gameobject parentId; duplicate_gameobject + grid_duplicate in edit mode; place_along_path deterministic yaw; execute_csharp stale-file sweep + multi-line bodies; spawn_model bad-path → warning (not false success); widened vector/color coercion; get_compile_errors cascade filter.raycast/raycast_terrain → a clear {recoverable, recovery:"restart_editor"} hint; install_asset/trigger_hotload warn on a new PackageReference. New docs/BRIDGE_GOTCHAS.md documents the engine limits that aren't code-fixable.sbox-cookbook brain was re-mined across 51 open-source games (was 47) — +6 genres (social-deduction, survivor-roguelite, coop-kitchen, board-game, casino-gambling, physics-sports) + 2 systems (ai-director, services-backend), high-traffic references enriched with a "Corpus refresh" pass, and a new references/CORPUS-INDEX.md cross-reference so recipes compose across games. Per-game mining lives in the local sbox-lessons/mining-v2/.sbox-cookbook, a code-grounded recipe library mined from real, shipped, open-source s&box games + the modern engine source. Genre playbooks, system how-tos, and engine references mean the AI builds inventories, economies, saves, shops, gacha, progression, and netcode the way shipped games do — not from a guess. See The brain above.inspect_networked_object — dump one object's Network.* state plus every component's [Sync] fields (flags + live values) — see exactly what replicates.networking_lint — static scan for multiplayer footguns: unguarded [Sync] mutators, money/health/score as plain [Sync], collections as [Sync], [Rpc.Host] methods that never re-check the caller.scene_validate — flags scene-setup footguns: no camera, stray root Rigidbodys, IsTrigger-vs-trace mismatches.save_inspect — list / read / diff the project's FileSystem.Data save files.services_query — read Sandbox.Services stats + leaderboards.simulate_input — drive named input actions in play mode.capture_view captures the live game in play mode (player POV + HUD), not just the edit scene. The bridge's first real play-mode eyes.create_npc_brain generates a full behavior state machine (patrol → chase → search, with FOV cone + line-of-sight + hearing and 5 presets) that animates as it moves; plus patrol routes, wave spawners, and an edit-mode perception checker.create_health_system, create_pickup, create_objective_system, spawners) + wiring tools (set_component_reference, add_component_to_new_object) turn placed objects into a playable loop. A bundled sbox-scaffold-game skill assembles a first-person starter in one ask.run_self_test health check, plus fixes under the hood: set_property now sets model/asset/object references reliably, create_material / load_scene / stop_play repaired, and an upgraded create_player_controller (first-person / third-person / top-down + auto scene placement).set_animgraph_param drives a Citizen's AnimationGraph (walk, crouch, aim, gestures); play_animation plays a named sequence; list_animations shows every animation a model has (a Citizen has 500+).screenshot_orbit captures an object from several angles in one call, so Claude can verify 3D work from the front, back, and sides instead of guessing from a single view.get_bounds returns an object's world-space size, center, and extents for precise placement and framing.read_log + get_compile_errors surface compile failures and logs, even when the editor has stalled. No more guessing.screenshot_from points the camera at any object/point so Claude can actually see what it built (and fix the angle).list_libraries detects installed addons (like the Shrimple Character Controller) so Claude drives them instead of reinventing.recompile_asset compiles a material/asset Claude writes or edits.restart_editor) to recompile and apply changes, so new code and bridge updates take effect without you manually restarting. Claude closes its own edit → compile → verify loop.SBOX_BRIDGE_IPC_DIR.Libraries/ target), no more tool.frame console spam, scene-edits refused during play mode (no save corruption), fault tolerance (one broken tool can't take the rest down), a TROUBLESHOOTING.md for the 10 most common failures, plus world-editing, terrain sculpting, forest painting, and live API/type discovery.Libraries/claudebridge/ automatically./plugin install sbox-claude, after /plugin marketplace add LouSputthole/Sbox-Claude). It registers the MCP server for you and keeps it updated — and bundles the cookbook brain, the specialist agent, the screenshot workflow skill, and onboarding. This is the path that gives you the full experience. claude mcp add sbox -- npx sbox-mcp-server@latestconnected: true with a live handler count. Then try:
"Create a cube at 0, 0, 100 with a box model."
"Write a player controller with WASD and mouse look."
"Build me a host-authoritative currency system." (watch it reach for the cookbook)
Claude Code ──stdio──> MCP Server (Node.js) ──file IPC──> Editor Addon (C#) ──> s&box Editor
%TEMP%/sbox-bridge-ipc/System.Net, so there's no socket) and entirely local.get_project_info, list_project_files, read_file, write_file, recompile_asset, create_script, edit_script, delete_script, trigger_hotload
list_scenes, load_scene, save_scene, create_scene
create_gameobject, delete_gameobject, duplicate_gameobject, rename_gameobject, set_parent, set_enabled, set_transform, get_scene_hierarchy, get_selected_objects, select_object, focus_object
list_available_components, add_component_with_properties, remove_component, get_property, set_property, get_all_properties, get_runtime_property, set_runtime_property, set_prefab_ref, invoke_method add_physics, add_collider, add_joint, raycast, physics_overlap
add_light, set_fog, add_post_process, set_skybox, add_envmap_probe, bake_reflections, apply_atmosphere, apply_post_fx_look, spawn_particle, create_particle_effect, add_trail, add_beam, spawn_vpcf
spawn_model, spawn_citizen, dress_citizen, set_bodygroup, pose_citizen, equip_model, set_look_at, add_ragdoll, set_expression, list_animations, play_animation, set_animgraph_param
snap_to_ground, align_objects, distribute_objects, grid_duplicate, measure_distance, scatter_props, randomize_transforms, group_objects
find_objects, set_tint, replace_model, set_tags, get_tags
invoke_button, list_component_buttons, raycast_terrain, build_terrain_mesh, sculpt_terrain, add_terrain_hill, add_terrain_clearing, add_terrain_trail, clear_terrain_features, add_cave_waypoint, clear_cave_path, add_forest_poi, add_forest_trail, set_forest_seed, clear_forest_pois, paint_forest_density, place_along_path
bake_navmesh, get_navmesh_path
create_razor_ui, add_screen_panel, add_world_panel
list_sounds, create_sound_event, assign_sound, play_sound_preview
assign_model, create_material, assign_material, set_material_property
create_prefab, instantiate_prefab, list_prefabs, get_prefab_info
add_network_helper, configure_network, get_network_status, network_spawn, set_ownership, add_sync_property, add_rpc_method, create_networked_player, create_lobby_manager, create_network_events
inspect_networked_object, networking_lint, scene_validate, save_inspect, services_query, simulate_input, sandbox_lint, razor_lint create_player_controller, create_npc_controller, create_game_manager, create_trigger_zone
search_assets, list_asset_library, install_asset, get_asset_info
start_play, stop_play, is_playing, undo, redo, drive_player, drive_player_status, ensure_input_action capture_view, take_screenshot, screenshot_from, screenshot_orbit, get_bounds, run_self_test, frame_camera, read_log, get_compile_errors, console_run, execute_csharp, restart_editor, get_bridge_status, set_time_scale, get_profiler_stats describe_type, search_types, get_method_signature, find_in_project, list_libraries, search_docs, get_doc_page, list_doc_categories
create_npc_brain, place_patrol_route, assign_patrol_route, create_npc_spawner, simulate_npc_perception
create_health_system, create_pickup, create_objective_system, add_component_to_new_object, set_component_reference
get_project_config, set_project_config, validate_project, set_project_thumbnail, get_package_details
SBOX_BRIDGE_IPC_DIR to the same path on both sides (or clear it on both so they share the default %TEMP%/sbox-bridge-ipc/). The #2 issue is the editor not actually running / not finished compiling — if get_bridge_status pings but other tools time out, the editor side isn't processing requests yet; let it finish loading or restart it. (Note: an old guide said the bridge dock must stay open — that's no longer true. Since v1.3 the frame loop is static and runs with the dock closed.)npx sbox-mcp-server@latest pulls the newest version on the next Claude session (the plugin does this automatically)..scene files under version control for anything non-trivial.