{"id":51026509,"url":"https://github.com/meticalabs/metica-sdk-agents","last_synced_at":"2026-06-21T20:01:53.910Z","repository":{"id":362570690,"uuid":"1246394217","full_name":"meticalabs/metica-sdk-agents","owner":"meticalabs","description":"Claude Code plugin: Metica agents for Unity SDK integration and runtime ad-log monitoring","archived":false,"fork":false,"pushed_at":"2026-06-11T23:44:01.000Z","size":492,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-12T01:18:37.067Z","etag":null,"topics":["applovin-max","claude-agents","claude-code","claude-plugin","metica","sdk-integration","unity"],"latest_commit_sha":null,"homepage":"https://metica.com","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/meticalabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-22T06:43:19.000Z","updated_at":"2026-06-11T23:44:02.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/meticalabs/metica-sdk-agents","commit_stats":null,"previous_names":["meticalabs/metica-sdk-agents"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/meticalabs/metica-sdk-agents","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meticalabs%2Fmetica-sdk-agents","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meticalabs%2Fmetica-sdk-agents/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meticalabs%2Fmetica-sdk-agents/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meticalabs%2Fmetica-sdk-agents/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/meticalabs","download_url":"https://codeload.github.com/meticalabs/metica-sdk-agents/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meticalabs%2Fmetica-sdk-agents/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34623906,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-21T02:00:05.568Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["applovin-max","claude-agents","claude-code","claude-plugin","metica","sdk-integration","unity"],"created_at":"2026-06-21T20:01:53.081Z","updated_at":"2026-06-21T20:01:53.905Z","avatar_url":"https://github.com/meticalabs.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# metica-sdk-agents\n\nClaude Code subagents and a skill that integrate [MeticaSDK](https://github.com/meticalabs/metica-unity-package) into Unity projects in one pass — including projects that already use AppLovin MAX — and verify integrations at runtime by analysing device logs (Android logcat / iOS idevicesyslog).\n\n## Install\n\n**Via Claude Code marketplace (recommended):**\n\n```\n/plugin marketplace add meticalabs/metica-sdk-agents\n/plugin install metica-sdk-agents@metica-sdk-agents\n```\n\nThat's it. Claude Code clones the repo, registers three agents and one skill, and sets `$CLAUDE_PLUGIN_ROOT` for you.\n\n**Verify:** launch Claude Code in your project and type `/agents` — you should see the three Unity agents under the `metica-sdk-agents` plugin. The `ad-log-monitor` skill shows up via `/` autocomplete (`/metica-sdk-agents:ad-log-monitor`) and via natural-language triggers (see \"Use the ad-log-monitor skill\" below).\n\n## Use the integrator\n\nFrom your Unity project's root in Claude Code, mention the integrator. The name depends on how you installed:\n\n```\n# Marketplace install (recommended):\n@metica-sdk-agents:unity-integrator\n```\n\nThat's the whole invocation. The integrator auto-detects the Unity project (walks up from `$(pwd)` looking for `ProjectSettings/`) and fills missing API keys with placeholders you swap in later. You'll be shown a plan and asked to approve before any file is written.\n\n\u003e **Tip:** unsure which form your install registered? Type `@metica-sdk-agent` and let autocomplete show it.\n\nIf you're outside the project, or you have several Unity projects in one workspace, pass it explicitly:\n\n```\n@agent-metica-sdk-agents:unity-integrator\nPROJECT=/absolute/path/to/your/unity/project\n```\n\n## Use the ad-log-monitor skill\n\nUse this when you have a build on a device and want to QA the runtime ad behaviour. It works for **any** Metica integration — fresh or already shipped — and is built around a **two-route protocol** (record the holdout user, then the trial user, then compare).\n\n**How to trigger it.** Any of these in the main conversation:\n\n| Form | Example |\n|---|---|\n| Slash (explicit) | `/metica-sdk-agents:ad-log-monitor` |\n| Natural language (auto-loads the skill from its description) | \"start ad-log monitoring\", \"capture logcat for ads\", \"analyse this logcat at `./trial-user-android-….log`\", \"compare trial vs holdout\" |\n\n(A skill is **not** invoked with the `@`-mention syntax used for agents — use the `/` slash form or just a trigger phrase.)\n\nThe skill will pick the right phase from your prompt: a bare invocation starts a new capture (Phase 1); \"done playing\" stops and analyses (Phase 2); \"compare\" produces the trial-vs-holdout verdict (Phase 3).\n\n**Two-route protocol.** Plan to run it twice on the same device, same build, same network — once for each route — so the comparison is apples-to-apples. Target **~5 interstitials and ~5 rewarded ads** per route.\n\n\u003e \"We'll run two captures so we can compare. First with the **holdout user** (control), then with the **trial user** (Metica active). On each run, play until you've seen roughly 5 interstitials and 5 rewarded ads. Don't change device, network, or app version between the two runs.\"\n\n**Optional baseline (recommended).** Holdout and trial are dev builds *you* provide; you can also capture a third `baseline` route on the **live App Store / Play Store build**. It's not a third A/B arm — it's a fidelity anchor that confirms your holdout dev-build reproduces production before anyone trusts the trial-vs-holdout numbers. The comparison treats it as context only, never as the pass/fail gate.\n\n**Minimal example.** In the main conversation, three turns end-to-end:\n\n```\nyou  \u003e  /metica-sdk-agents:ad-log-monitor start the holdout capture\nclaude \u003e [runs log-monitor-start.sh --label=holdout-user, prints session block,\n         \"now play the game\"]\nyou  \u003e  [plays ~5 interstitials + ~5 rewarded ads, comes back]\n       done\nclaude \u003e [runs log-monitor-stop.sh, reads the log, writes ./holdout-user-analysis.md]\nyou  \u003e  [swaps to the trial user on the device, repeats: \"start the trial capture\"\n         → play → \"done\" → analysis lands at ./trial-user-analysis.md]\nyou  \u003e  compare\nclaude \u003e [reads both analyses + both raw logs, writes ./compare-trial-vs-holdout.md]\n```\n\nIf you already have logs from elsewhere and want to skip the capture:\n\n```\nyou  \u003e  /metica-sdk-agents:ad-log-monitor analyse the 2 existing logs at\n        ./holdout-user-android-….log and ./trial-user-android-….log\n```\n\n**Output artifacts** (all written to the current working directory; multiple captures coexist by label and timestamp):\n\n| File | Source | What it is |\n|---|---|---|\n| `./\u003clabel\u003e-\u003cplatform\u003e-\u003cYYYYMMDDThhmmssZ\u003e.log` | start.sh | Raw capture (Android logcat or iOS syslog) |\n| `./\u003clabel\u003e.session` | start.sh | Shell-readable handoff state (label/platform/pid/log path). Removed by stop.sh; never sourced. |\n| `./\u003clabel\u003e-filtered.txt` | the skill | Grep-filtered subset, useful for browsing |\n| `./\u003clabel\u003e-analysis.md` | the skill | Per-route analysis (stack inventory, per-format stats, network attribution, revenue, floor handoff, load strategy, errors) |\n| `./compare-\u003ctrial\u003e-vs-\u003choldout\u003e.md` | the skill | Phase 3 side-by-side verdict with the n=5 caveat |\n\nThe Phase 1 script clears the device's main `logcat` buffer for a clean capture — that wipes existing log history for every app on the device, not just the target. The skill warns the user before it runs the script.\n\n## The four components\n\n| Name                                        | Type  | Role                                                                                                                                |\n| ------------------------------------------- | ----- | ----------------------------------------------------------------------------------------------------------------------------------- |\n| `@metica-sdk-agents:unity-compat-checker`   | Agent | Detects Unity / Java / MaxSDK / Android API / MeticaSDK install. PASS or BLOCK with a precise remediation hint.                     |\n| `@metica-sdk-agents:unity-integrator`       | Agent | Orchestrator. Discovers whether MaxSDK is present, presents a plan, snapshots git, generates code, invokes the validator.           |\n| `@metica-sdk-agents:unity-validator`        | Agent | Independent verification of any integration. Reads the project's code and reasons about every rule (structural + behavioral); behavioral verdicts carry line-cited evidence. Plus a Unity batch compile. |\n| `/metica-sdk-agents:ad-log-monitor`         | Skill | Runtime QA on a connected device. Captures Android logcat / iOS idevicesyslog while QA plays, extracts ad unit IDs / network / revenue / lifecycle / Metica→MAX floor handoff, and compares holdout vs trial. |\n\nMost users only ever invoke the integrator. The compat-checker and validator are called by the integrator automatically (and are available standalone if you want to spot-check an existing integration). The `ad-log-monitor` skill is a separate runtime-QA workflow — invoke it directly when you have a build on a device.\n\n## Compatibility matrix\n\nDefined in `metica-versions.yaml` (single source of truth):\n\n| MeticaSDK      | Unity    | Java | MAX     | Android API |\n| -------------- | -------- | ---- | ------- | ----------- |\n| 2.4.0 (latest) | ≥ 2021.3 | ≥ 11 | ≥ 8.2.0 | ≥ 23        |\n| 2.2.7          | ≥ 2021.3 | ≥ 11 | ≥ 8.0.0 | ≥ 23        |\n\nThe compat-checker reads this file. To add a new SDK version, add an entry and bump `latest:`.\n\n## Running the tests\n\n```bash\ncd ~/.metica-sdk-agents   # or wherever you cloned\nbash tests/run-all.sh\n```\n\nThe five test suites — `resolver`, `download`, `compile`, `update-check`, `log-monitor` — cover the scripts under `scripts/` (`resolve-plugin-dir.sh`, `download-metica-sdk.sh`, `compile-check.sh`, `check-for-update.sh`, `log-monitor-start.sh` / `log-monitor-stop.sh`). The verification logic lives in agent prose (reviewed by the user at run time), so it is not golden-tested.\n\nThe `download` suite needs a local SDK build at `../Metica SDK builds/MeticaSdk-2.4.0.unitypackage` and silently skips when it's absent; the other four run on any clean clone.\n\n## Repo layout\n\n```\nmetica-sdk-agents/\n├── .claude-plugin/\n│   ├── marketplace.json               # Claude Code marketplace manifest\n│   └── plugin.json                    # plugin manifest\n├── install.sh                         # one-line installer\n├── metica-versions.yaml               # compat matrix\n├── hooks/\n│   └── hooks.json                     # SessionStart update-notify hook\n├── agents/\n│   ├── contracts.md                   # JSON schemas for sub-agent outputs\n│   ├── unity-compat-checker.md\n│   ├── unity-integrator.md\n│   └── unity-validator.md\n├── skills/\n│   └── ad-log-monitor/\n│       └── SKILL.md                   # runtime ad-lifecycle verification + trial-vs-holdout comparison\n├── scripts/                           # only what an agent can't do in prose\n│   ├── resolve-plugin-dir.sh          # auto-detects plugin root for agents + skill\n│   ├── check-for-update.sh            # SessionStart update-notify check\n│   ├── compile-check.sh               # batch-mode Unity build behind the validator's compiles_cleanly rule\n│   ├── download-metica-sdk.sh         # offered by integrator when compat-check finds MeticaSDK missing\n│   ├── log-monitor-start.sh           # ad-log-monitor Phase 1: background capture + health checks\n│   ├── log-monitor-stop.sh            # ad-log-monitor Phase 2a: stop capture + summary (analysis is the skill's job, Phase 2b)\n│   └── templates/standalone/          # MeticaAdService.cs.tmpl — one MonoBehaviour, per-format @fmt regions\n├── references/\n│   ├── max-metica-api-map.tsv         # machine-readable MaxSdk → MeticaSdk map; read by both validator + integrator\n│   ├── max-vs-metica-2.4.0-api.md     # narrative parity doc (keep in sync with the TSV)\n│   └── 3pa-forwarders.md              # canonical 3PA revenue-forwarder shapes\n└── tests/                             # 5 suite scripts (+ run-all.sh) + log-monitor fixture\n```\n\n## License\n\nApache License 2.0 — see [LICENSE](./LICENSE).\n\n## Support\n\nIssues and feedback: https://github.com/meticalabs/metica-sdk-agents/issues — `dev@metica.com`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeticalabs%2Fmetica-sdk-agents","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeticalabs%2Fmetica-sdk-agents","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeticalabs%2Fmetica-sdk-agents/lists"}