Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion skills/audio-setup-mixers/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Once `eval` is available, that is how each C# step below runs.

Run C# through the connected Editor with the `eval` command. Discover its parameter shape
from `unity command --format json` rather than assuming one — the inline form is
`unity command eval --caller plugin --skill audio-setup-mixers --code '<snippet>'`, and some Pipeline versions also register
`unity command eval --code '<snippet>'`, and some Pipeline versions also register
`eval_file` for running a snippet from a file. **Check the catalog before reaching for
`eval_file`; it is frequently absent.** `unity command` defaults to a 30 second timeout.

Expand Down
2 changes: 1 addition & 1 deletion skills/audio-setup-mixers/references/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ to add any missing groups (two clicks in a window they already have open), and t
routing itself. The tedious part — walking dozens of Audio Sources and classifying them — is the
part that was worth automating anyway.

All snippets below are written for `unity command eval --caller plugin --skill audio-setup-mixers --code '<snippet>'`: fully qualified, no
All snippets below are written for `unity command eval --code '<snippet>'`: fully qualified, no
`using` directives, returning their result rather than logging it.

## Inventory the project's mixers and their groups
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ This is a read-only Editor UI action. It must not create, modify, delete, import

Replace `QUERY_HERE` with the generated Unity Search query. If the query contains double quotes, double them inside the verbatim C# string.

Run it through the Editor with `unity command eval --caller plugin --skill generate-editor-search-query --code '<snippet>'`. Fully qualified, with no
Run it through the Editor with `unity command eval --code '<snippet>'`. Fully qualified, with no
`using` directives, because `eval` compiles a statement block rather than a file.

```csharp
Expand Down
233 changes: 233 additions & 0 deletions skills/implement-in-app-purchases/README.md

Large diffs are not rendered by default.

69 changes: 69 additions & 0 deletions skills/levelplay-unity-integration/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# Changelog

## v0.10.0 — 2026-08-21 — Workflow spine, and a hard install gate

Moves reference material out of `SKILL.md` and makes the SDK install a verified step rather than an assumed one.

**Changed:**
- `SKILL.md` is now the workflow spine only, going from about 1,100 lines to 435. The dependency-resolution, testing-and-validation and troubleshooting material that was inlined in it moves into `references/`. Nothing was dropped; it is read on demand instead. `SKILL.md` is loaded in full on every invocation while a reference file is read only when a step links it, so this is a saving on every run that does not need the detail.
- The reference set grows from nine files to twelve: `dependency-resolution.md`, `testing-and-validation.md` and `troubleshooting.md` are now separate files.

**Added:**
- **A hard install-verification gate at Step 3.** No LevelPlay code is written until `com.unity.services.levelplay` is confirmed present in `Packages/packages-lock.json`, read from the project rather than taken from the Package Manager window or an earlier turn. The package is easy to believe is installed: its display name is **Ads Mediation** while the recorded id is `com.unity.services.levelplay`, two similarly named packages are the wrong ones, and the install prompts for a second package partway through. Code written before the id resolves fails with `CS0246` on every LevelPlay symbol, which reads as a code problem rather than an install problem. The gate also distinguishes "the install never happened" from "Unity has not resolved it yet", because the fix differs.
- The deprecated-APIs section now states explicitly that `SetGDPRConsents(Dictionary)` is **not** deprecated on SDK 9.4.x, where it is the correct call, and only becomes `[Obsolete]` on 9.5.0+. It is kept out of the deprecated list rather than listed with a caveat, so it cannot be read the wrong way round.

## v0.9.0 — 2026-08-17 — SDK 9.x migration support

Adds guided migration to the LevelPlay 9.x SDK and the current Ad Unit (MADU) APIs.

**New:**
- "New Integration or Migration?" routing step at the start of the workflow
- Migration reference guide covering five scenarios: SDK upgrade (.unitypackage or UPM, including switching from .unitypackage to UPM), init API migration (IronSource.Agent to LevelPlay.Init), ad unit API migration (rewarded, interstitial, banner, and the ILRD handler), Maven Central dependency build failures, and Unity Ads (Advertisement Legacy) migration
- Upgrade safety flow: Developer Settings values and installed adapters are inventoried, and the user confirms, before any folder deletion; post-upgrade steps cover adapter reinstall, settings re-entry, and removal of the stale LEVELPLAY_DEPENDENCIES_INSTALLED scripting define when switching from .unitypackage to UPM
- Migration completeness checklist covering requirements that a line-by-line translation misses: placement capping checks when dashboard placements are used, an explicit rewarded load trigger, the version API mappings, correct ILRD event names, preserved logging, HideAd vs DestroyAd intent for legacy destroyBanner calls, and removal of onApplicationPause
- Compilation check after migration edits, with errors fixed before presenting results
- Skill description now also triggers on SDK upgrades, deprecated IronSource.Agent APIs, and Unity Ads migration

**Fixed:**
- Banner adaptive-size example used a constructor form that does not compile on any 9.x version; now configured through Config.Builder (verified against 9.0.0, 9.4.0, and 9.5.0 source)
- API mapping corrections: validateIntegration maps to LevelPlay.ValidateIntegration (not LaunchTestSuite); pluginVersion maps to LevelPlay.PluginVersion (distinct from UnityVersion); onApplicationPause is removed in 9.x with no replacement; the legacy ILRD subscription maps to LevelPlay.OnImpressionDataReady on SDK 9.4.x and earlier or per-instance OnAdImpressionDataReady on 9.5.0+
- Unity Ads migration now surfaces that LevelPlay.Init has no test-mode parameter (Test Suite or dashboard test mode are the equivalents) instead of dropping the flag silently
- Package edits during upgrades touch only manifest.json; packages-lock.json is never hand-edited
- Maven Central migration is mentioned only when the project actually needs it
- Corrected a consent-callback name mismatch in the privacy reference, and a banner troubleshooting example that called a method banners do not have

## v0.8.0 — 2026-08-05 — Version-aware ILRD (SDK 9.5.0), rewarded load lifecycle, and improved activation

Accuracy and activation updates reflecting current LevelPlay SDK behavior.

**Impression-level revenue (ILRD) — SDK 9.5.0 API change**
- ILRD now documents both delivery mechanisms: the single global `LevelPlay.OnImpressionDataReady` event (SDK 9.4.x and earlier) and the per-ad-instance `OnAdImpressionDataReady` events on each ad object (SDK 9.5.0+), which replace the global event.
- The global event still exists but is deprecated on SDK 9.5.0+ and generates a compiler warning.
- Updated the initialization step and the rewarded/interstitial/banner references to direct SDK 9.5.0+ users to the per-instance approach.

**Rewarded ad load lifecycle**
- Clarified that `LoadAd()` must be called explicitly; the SDK does not auto-manage rewarded loading (unlike the legacy IronSource API).
- Reframed the guidance so explicit, publisher-triggered loading is the default, with eager preloading documented as an optional pattern. Applies to `references/rewarded-api.md` and the loading-strategy guidance in `SKILL.md`.

**Description and activation**
- Reworked the skill description to increase activation on general ad and monetization requests, not only when a developer names LevelPlay.
- Added guidance at the top of the skill directing the agent to run it as an interactive, step-by-step workflow and use the reference files, rather than answering from general knowledge.

## v0.7.0 — 2026-06-12 — Initial public beta release

First release of the LevelPlay Unity integration skill, released as public beta.

**Features:**
- Step-by-step installation of the LevelPlay SDK using the Ads Mediation package in Unity Package Manager
- Native dependency resolution for Android and iOS
- SDK initialization with three code organization options
- Ad unit strategy recommendations based on business goals (revenue-focused, UX-focused, or balanced)
- Implementation guides for rewarded ads, interstitials, and banner ads
- Privacy compliance support (GDPR, CCPA, COPPA)
- iOS setup (App Tracking Transparency, SKAdNetwork)
- Impression-level revenue tracking (ILRD)
- Testing guidance using mock ads and the LevelPlay Test Suite

## Feedback

This skill is currently in beta. [Share your feedback here](https://docs.google.com/forms/d/e/1FAIpQLSe7WvWozJ67KjgOLglSBvLug8JdgEYk895nn_BHZs0HS_bWJA/viewform).
78 changes: 78 additions & 0 deletions skills/levelplay-unity-integration/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# LevelPlay Unity Integration Skill

![Beta](https://img.shields.io/badge/status-beta-orange) ![Version](https://img.shields.io/badge/version-0.7.0-blue) ![License](https://img.shields.io/badge/license-Unity%20Companion-blue)

> 🧪 **Note:** This skill is in beta and will be shaped by your feedback. Try it out and [let us know what you think](https://docs.google.com/forms/d/e/1FAIpQLSe7WvWozJ67KjgOLglSBvLug8JdgEYk895nn_BHZs0HS_bWJA/viewform)!

A skill that guides Unity developers through integrating the LevelPlay SDK using the Ads Mediation package in Unity Package Manager: from installation to fully working rewarded ads, interstitials, and banners.

Compatible with Claude Code, GitHub Copilot, Cursor, Cline, and [50+ other agents](https://skills.sh).

## What it does

When you activate this skill, your agent walks you step by step through the complete LevelPlay integration:

1. **Installing the SDK** via the Ads Mediation package in Unity Package Manager
2. **Resolving native dependencies** for Android and iOS builds
3. **Collecting credentials** from the LevelPlay dashboard
4. **Configuring privacy compliance** (GDPR, CCPA, COPPA) if needed
5. **Initializing the SDK** in your project, with three code organization options to fit your existing setup
6. **Recommending an ad unit strategy** based on your goals (revenue-focused, UX-focused, or balanced)
7. **Implementing ad formats** — rewarded ads, interstitials, and banners — with production-ready C# code
8. **Testing and validating** using mock ads in the Unity Editor and the LevelPlay Test Suite on device

The skill also covers iOS-specific setup (App Tracking Transparency, SKAdNetwork), impression-level revenue tracking (ILRD) for analytics platforms, bid floors, and common troubleshooting.

## Requirements

- A Unity project using an LTS or actively developed version of the Unity Editor
- LevelPlay Unity package and SDK version 9.4.0+
- A LevelPlay account: [get started here](https://platform.ironsrc.com/)

Documentation for setting up the LevelPlay Unity package: see the [Unity Package Integration guide](https://docs.unity.com/en-us/grow/levelplay/sdk/unity/package-integration).

## Installation

```bash
npx skills add Unity-Technologies/skills
```

Then activate the `levelplay-unity-integration` skill in your agent.

## Using the skill

Type `/levelplay-unity-integration` to activate the skill, then describe what you want to do:

- *"I want to add rewarded ads to my Unity game"*
- *"Help me integrate LevelPlay into my project"*
- *"I need to add interstitial ads between levels"*
- *"I have LevelPlay installed, help me implement banner ads"*

You can jump in at any step. If the Unity package and SDK are already installed, your agent will pick up from where you are.

## Privacy & Legal

> **Note:** This skill provides technical integration guidance, including for LevelPlay's privacy APIs. It is not legal advice, and it does not determine which laws apply to your app — that depends on your users, your data practices, and your distribution. Consult your own legal counsel, and refer to [Regulation Advanced Settings for Unity](https://docs.unity.com/en-us/grow/levelplay/sdk/unity/regulation-advanced-settings) for the authoritative LevelPlay documentation.

## What's in this folder

```
levelplay-unity-integration/
├── SKILL.md # The workflow spine: decisions, checkpoints, questions
├── references/ # Detail read on demand, linked from the step that needs it
│ ├── initialization-api.md
│ ├── rewarded-api.md
│ ├── interstitial-api.md
│ ├── banner-api.md
│ ├── ilrd-api.md
│ ├── privacy-settings.md
│ ├── ios-setup.md
│ ├── dependency-resolution.md
│ ├── testing-and-validation.md
│ ├── troubleshooting.md
│ ├── migration-sdk-9.md
│ └── best-practices.md
├── CHANGELOG.md
└── README.md
```

2 changes: 1 addition & 1 deletion skills/migrate-birp-to-urp/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ Two things it can't know for you:
materials, and rebaking lighting all need a live Editor. An unreachable Editor is a stop, not a
cue to hand-edit `ProjectSettings/GraphicsSettings.asset`.

Run C# with `unity command eval --caller plugin --skill migrate-birp-to-urp --code '<snippet>'`. `unity command` defaults to a 30 second
Run C# with `unity command eval --code '<snippet>'`. `unity command` defaults to a 30 second
timeout, which matters here: installing URP triggers a package refresh and domain reload that will
outlast it. Treat that as a phase boundary rather than raising the timeout.

Expand Down
Loading
Loading