From nethercore
Testing Nethercore games for determinism and correctness. Covers sync testing, replay recording and playback, debug actions, and desync diagnosis. Use when running sync tests, setting up replay-based regression tests, or diagnosing determinism failures.
npx claudepluginhub nethercore-systems/nethercore-ai-plugins --plugin nethercoreThis skill uses the workspace's default tool permissions.
Runs two identical instances, compares checksums each frame.
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Runs two identical instances, compares checksums each frame.
nether run --sync-test
nether run --sync-test --frames 3000 # Specific duration
Pass criteria: Identical checksums for 1000+ frames.
Record and replay for regression testing:
nether run --record replay.bin # Record
nether run --replay replay.bin # Playback
Workflow:
| Do | Don't |
|---|---|
random() FFI | rand::thread_rng() |
BTreeMap, BTreeSet | HashMap, HashSet |
| Frame counter | Instant::now() |
| Fixed-point math | Floating-point accumulation |
| Type | Tool | Purpose |
|---|---|---|
| Unit | cargo test | Pure logic |
| Sync | nether run --sync-test | Runtime determinism |
| Replay | --record/--replay | Cross-build validation |
log() calls around suspicious codeInstead of recording long input sequences, use debug actions to skip directly to test scenarios:
# Skip to level 3 boss
[[frames]]
f = 0
action = "Load Level"
action_params = { level = 3 }
[[frames]]
f = 1
snap = true
assert = "$boss_health > 0"
Games register actions in init():
debug_action_begin(b"Load Level".as_ptr(), 10, b"debug_load_level".as_ptr(), 16);
debug_action_param_i32(b"level".as_ptr(), 5, 1);
debug_action_end();
When to use: