← Yes2SDKCONTENT HISTORY
WHAT CHANGED
Update to Yes2SDK
Snapshot Oct 26, 2026 · 12:07 UTC · version 0.1.0
Collection source: downloaded plugin package.
First saved snapshot
No earlier snapshot is available to establish a change.
Save Yes2SDK and check future changes in Following.
Up to 10 plugins free · no card required.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Validates a Yes2SDK WebGL build against one platform or all of them (Poki, CrazyGames, Yandex, GameDistribution, YouTube). Use before an upload, or when asked whether a build would be rejected.",
"included_files": [
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 216
}
],
"name": "yes2sdk-verify",
"skill_md_contents": "---\nname: yes2sdk-verify\ndescription: Validates a Yes2SDK WebGL build against one platform or all of them (Poki, CrazyGames, Yandex, GameDistribution, YouTube). Use before an upload, or when asked whether a build would be rejected.\n---\n\n# Verifying a Yes2SDK build\n\nThis is the single source of the verify procedure. Single-platform checks,\nall-platform sweeps and the check at the end of `$yes2sdk-integrate` all run it.\nEdit the procedure here, not in the skills that call it.\n\n## Inputs\n\n- **Platform**: one of `poki`, `crazygames`, `yandex`, `gamedistribution`,\n `youtube`, or `all`. Take it from the request (\"verify for Poki\", \"check every\n platform\"). When the request names none, use `all`.\n- **Build**: the user's **extracted** WebGL build folder. If the request gives no\n path, ask once, then reuse the same build for every platform in this run.\n- **Event log** (optional): an exported Inspector event log.\n\n## Procedure\n\n1. Read the build once. The plugin registers the **hosted** server, and it has no\n disk access, so `buildPath` there comes back as a blocking `build-path` FAIL.\n Read the build locally and pass it inline as `indexHtml`, `fileList` and\n `jsContents`. `jsContents` is what makes the Yes2SDK-bundling check possible;\n without it that check cannot run. Pass `buildPath` only when the user has the\n server running on their own machine.\n2. An Inspector event log may be passed as `eventLogJson`, in addition to or\n instead of the build. The static checks need the build; the behavioral rules\n (gameplayStop before ads, reward only on `adViewed`, no ads in the first 30s)\n exist only in the event log and cannot be derived from files. With only one of\n the two, state plainly which checks did not run.\n3. Call `yes2sdk:validate_integration` once per platform being verified, reusing\n the same inline build.\n4. For any FAIL whose fix is not obvious from its hint, call\n `yes2sdk:get_compliance_rule` with the rule id before reporting.\n5. Report as below.\n6. Never soften or reinterpret a FAIL, and never mark one resolved by reasoning.\n The rule set is the platform's, not this plugin's; if a finding looks wrong,\n report it as returned and say so.\n\n## Report\n\n**One platform:** blocking FAILs first, then WARNs, each with its rule id and the\nfix hint carried on the finding.\n\n**All platforms:** triage by cause, not by platform. One missing `gameplayStop()`\nfails many platforms and is one fix, not one finding each.\n\n1. A one-line verdict: which platforms this build can ship to as-is.\n2. A table: `platform | blocking FAILs | WARNs`.\n3. The fix list in this order, each with the rule id and the file it applies to\n when you can identify it:\n - **Blocks everywhere**: a FAIL that appears on 3 or more platforms. Fix first;\n it is usually a universal (`U-`) rule.\n - **Blocks one platform**: per-platform FAILs, grouped under that platform.\n - **Warnings**: after the FAILs, briefly.\n4. Any checks that could not run, and why. A sweep with no event log did not run\n the behavioral rules at all, and reporting that as a clean pass is the worst\n failure this skill can have.\n\n## What each platform usually rejects on\n\nUse these only to explain a finding in the user's terms. They are a summary, not\nthe rule set; `yes2sdk:validate_integration` is authoritative.\n\n| Platform | Usual causes of rejection |\n| --- | --- |\n| `poki` | `gameplayStop()` missing before an interstitial; ads in the first 30s; interstitials more often than 1/60s; ads during loading; rewards granted in `afterAd` instead of `adViewed`; external `<script src=\"http...\">`; non-responsive canvas. |\n| `crazygames` | Missing wrapper options on init; loading not reported (`setLoadingProgress` / `startGameAsync`); gameplay not bracketed with `gameplayStart()`/`gameplayStop()`; audio not muted during ads; interstitials under the 3-minute floor; an `'unfilled'`/`'adblock'` ad error treated as a dismissal. |\n| `yandex` | `startGameAsync()` missing, so the loading screen never dismisses; pause/resume not handled, so audio keeps playing during ads; `gameplayStop()` missing before ads; locale not read from `session.getLocale()`. |\n| `gamedistribution` | `gameId` not set before the SDK loads; mute/pause not wired to `beforeAd`/`afterAd`; rewards granted in `afterAd` instead of `adViewed`; external scripts beyond GD's own SDK. |\n| `youtube` | Strictest, and the checks are cert-mandatory: `startGameAsync()` not gating `gameReady()` (called during loading); `pause` not stopping game loop, audio and network; audio state not honored (`session.isAudioEnabled()` + `audioEnabledChange`); external scripts (CSP sandbox); cloud saves over the 3 MiB cap. |\n"
}SHA-256 of public snapshot: df1a45940f676b168d1e88e7594163fca28f2fee6158de4366bae00f570cbc05