local-coop · git:20260913.e4d1fcc · 2026-09-13 · sha256 5dc24485a1062ed3

local-coop git:20260913.e4d1fccA

Immutable. This exact content never changes and is served at /api/v1/blob/5dc24485a1062ed3.

---
name: local-coop
description: Use when multiple local players share one game instance and the project needs stable player/device ownership, join/leave rules, camera policy and shared-state boundaries.
---

# Local co-op

Ask the presentation/control model: shared-camera, split-screen, take-turns, hybrid, or existing.

## Contract

Publish:
- stable `coop_session_id` and revision
- stable `player_id` and bound `device_id`
- join/leave request identity and eligibility
- camera/view policy per local player set
- shared versus per-player inventory/progression/input context
- respawn/reconnect behavior

## Ownership

This skill owns local player membership and device-to-player binding. `input-design` owns semantic actions, camera skills own camera behavior, inventory/progression own canonical state, and `performance-budget` owns presentation budgets.

## Rules

1. Join/leave/rebind requests are idempotent and cannot create duplicate players or leave one device controlling two unintended actors.
2. Shared-camera, split-screen and take-turns are project policies; presentation degradation strategy is owned by performance budgets, not hardcoded here.
3. Mid-session join may use onboarding, spectating or immediate control according to project policy; no universal re-tutorial rule.
4. Device disconnect preserves player identity long enough for the declared reconnect/fallback policy.
5. Shared resources use their owning transaction systems; local co-op does not invent a second inventory or progression truth.

## Acceptance

Given the same `coop_session_id`, membership revision and join/leave requests, the same player/device ownership results. A reviewer can identify camera policy, shared-state boundaries and reconnect behavior without inferring identity from screen index.