Ic headsets
Walk an IC member's agent through the PICO 4 Ultra Enterprise lending lifecycle — check waiver status, sign waiver if needed, browse inventory, check out a unit, return it, file a damage report. Operator-tier agents can additionally triage active lends, mark / clear out-of-service, force-return stuck lends, and resolve incidents. Use when the human says "lend me a PICO", "I want to borrow a headset", "check the PICO inventory", "return IC1", "file damage on IC2", "what's still out", or any flavor of "headset / VR / PICO" against the Immersive Commons program. Requires an IC agent token with scopes from `headsets:read` (read-only) up through `headsets:lend` + `headsets:report_damage` (member writes) and `admin:headsets_review` (operator). Official immersivecommons.com skill.From its SKILL.md
npx -y skills add Immersive-commons/ic-skills --skill ic-headsetsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
9.4 KB, ~2.3k tokens by cl100k_base, as published. Nobody here has run it
You help an agent's human use the Immersive Commons PICO lending program end-to-end. The fleet is 8 PICO 4 Ultra Enterprise units (IC1..IC8) on Floor 10 of Frontier Tower SF; through 2026-06-14 they do not leave the floor.
This skill is the agent walkthrough. The human-facing canonical doc is at https://www.immersivecommons.com/floor10/headsets/handling (markdown variant: /floor10/headsets/handling.md).
Pre-flight (every session)
-
Token check. Need
FLOOR10_AGENT_TOKENwith at minimumheadsets:read. Member writes also needheadsets:lendand/orheadsets:report_damage. Operator triage needsadmin:headsets_review. Smoke probe:curl -H "Authorization: Bearer $FLOOR10_AGENT_TOKEN" \ -X POST -H "content-type: application/json" \ -d '{"jsonrpc":"2.0","id":"1","method":"tools/call","params":{"name":"ic_headsets_list_inventory","arguments":{}}}' \ https://www.immersivecommons.com/api/mcp200 + a tools/call result = good. 401 = no/bad token. 403 = scope missing.
-
Identity check. The human's IC tier (
ic-memberminimum for lending) is enforced server-side via the agent token's bound Clerk identity. If the human isn'tic-member, the lend tools will refuse and the agent should walk them throughic_request_tierfirst (see theic-onboardingskill).
The four common flows
A. "Lend me a PICO"
Order matters — each step gates the next.
-
Check waiver freshness.
{ "name": "ic_headsets_check_waiver", "arguments": {} }Response
stateis one offresh|stale-version|expired|missing.fresh→ skip to step 3.stale-version/expired/missing→ continue to step 2.
-
Sign the waiver. The agent supplies the human's name + email + signed_typed string (the human's actual typed name). Phone + telegram are optional but recommended. Don't fabricate values — surface the form fields to the human and let them dictate.
{ "name": "ic_headsets_sign_waiver", "arguments": { "name": "Jane Founder", "email": "[email protected]", "phone": "+1...", "telegram": "@janef", "signature_typed": "Jane Founder", "photo_consent": "yes" } }Returns
{ ok, record_id, expires_at }. Hard rules: the agent does NOT supply theringfield — the server derives it from the live tier. The agent does NOT fabricate the typed signature — that's the human's actual keystroke string. -
Browse inventory.
{ "name": "ic_headsets_list_inventory", "arguments": {} }Filter to
status: "available". If none available, surface what's in the queue and tell the human; do NOT try to bypass the gate. -
Checkout.
{ "name": "ic_headsets_checkout", "arguments": { "unit_id": "IC1" } }Returns
{ ok, lend_id, due_back_at }on success. Error kinds:no_waiver→ loop back to step 1 (race; sign waiver expired between check and checkout).already_lending(withexisting_lend_id) → human already has a lend out; surface it.unit_not_found/unit_not_available→ race; re-list inventory and pick another. Surface thelend_idanddue_back_atto the human. Defaultdue_back_atis end-of-floor-day OR +4h from checkout, whichever is sooner.
B. "Return my lend"
-
Find the active lend.
{ "name": "ic_headsets_get_my_lend", "arguments": {} }Returns
{ lend: LendRecord | null }. Ifnull, tell the human they have no active lend. -
Confirm condition with the human. Ask: "clean return, or any damage / hygiene flag?"
-
Submit return.
{ "name": "ic_headsets_return", "arguments": { "lend_id": "lnd_...", "damaged": false } }On clean return (
damaged: false), unit goes back to the available pool. Ondamaged: true, the unit auto-flips toout-of-serviceAND the agent MUST follow up withic_headsets_report_damageso the incident details land (otherwise the unit sits OOS with no triage record).
C. "Report damage on a unit"
Any IC member can file (the borrower, a witness, ops staff). The damage form is permissive on roles but strict on content — description must be 20+ chars and specific.
{
"name": "ic_headsets_report_damage",
"arguments": {
"unit": "IC2",
"type": "lens",
"description": "Visible scratch on the right lens center, about 3mm long. Borrower confirms it was there at handover. Discovered during the post-flight inspection.",
"reporter_name": "Jane Founder",
"reporter_role": "borrower",
"reporter_contact": "@janef",
"lend_id": "lnd_...",
"photo": "data:image/jpeg;base64,..."
}
}
Fields:
type: one oflens|shell|controller|battery|hygiene|loss|near-miss|other. Pick the closest match;otheris fine when none fit.reporter_role:ops-staff|borrower|member(witness).lend_id(optional but useful): if present, the lend record'sdamage_flag+damage_incident_idget back-filled.photo(optional but strong): base64 data URL, capped at ~5MB raw. Decline to attach if the human doesn't have one — text-only reports still triage.
Returns { ok, incident_id }. The Telegram fanout fires within 60 seconds via node-side ic-notify. Do NOT tell the human "operations was paged instantly" — tell them "within a minute."
D. Operator triage (operator-only)
If the human is an IC operator and is asking about the queue:
{ "name": "ic_headsets_admin_list_active_lends", "arguments": {} }
{ "name": "ic_headsets_admin_list_open_incidents", "arguments": { "limit": 50 } }
Mutation verbs:
ic_headsets_admin_mark_oos— pull a non-lent unit from rotation. Args:{ unit_id, reason }.ic_headsets_admin_clear_oos— return a unit to the available pool. Refuses if an open incident exists on it — resolve the incident first.ic_headsets_admin_force_return— close a stuck lend (member unreachable, end-of-day cleanup). Args:{ lend_id, reason }. Releases the per-member NX lock so the borrower can lend again.ic_headsets_admin_resolve_incident— triage verdict + audit note. Args:{ incident_id, verdict, resolution }. Verdicts:absorbed— IC eats the cost (waiver §11 good-faith).willful-misuse— member charged. Unit stays OOS.resolved— back to rotation, no charge. Auto-clears OOS as a side effect.
Always ask the operator for the resolution note. Don't invent one.
Hard rules
- Do not invent typed signatures. The
signature_typedfield is the human's actual keystrokes. If the human won't type it themselves, abort — agents that synthesize signatures break the audit trail. - Do not fabricate incident descriptions. If the human can't describe the damage, surface the standard categories and let them pick, but the prose must come from them or from a photo the agent can describe.
- Do not bypass the waiver step. A
no_waivererror fromic_headsets_checkoutmeans the human MUST sign before the lend will work. There's no override. - Do not transport off-floor. Through 2026-06-14, the lending program is floor-only. The waiver §9 is explicit; off-floor use is willful misuse under §11.
- Do not retry on
unit_not_available/already_lending. These are race-loss states. Re-fetch inventory and either pick a different unit OR surface the existing lend to the human. - Surface incident IDs. When the agent files damage, tell the human the
incident_idand that Ray will see it on Telegram within a minute. Don't promise immediate triage.
Quickstart for fresh agents
- Token: see the
ic-onboardingskill for the RFC 8628 device-code flow. Request scope set:["read:public", "membership:read", "headsets:read", "headsets:lend", "headsets:report_damage"]for a full member-side token. - Smoke probe:
ic_headsets_list_inventoryover MCP. 200 = good. - Loop the four flows above on demand.
Related skills
ic-onboarding— RFC 8628 device-code signup; how the human authorizes scopes.ic-events— Sister surface; same auth model.ic-signed-agent— Optional Ed25519 signed-request upgrade so a leaked bearer alone is useless.
Discovery surfaces
- Agent card: https://www.immersivecommons.com/.well-known/agent-card.json
- Aiia manifest: https://www.immersivecommons.com/.well-known/ai-agent.json
- MCP discovery: https://www.immersivecommons.com/.well-known/mcp.json
- llms.txt URL map: https://www.immersivecommons.com/llms.txt
- Human-facing handling rules: https://www.immersivecommons.com/floor10/headsets/handling
- Markdown variant: https://www.immersivecommons.com/floor10/headsets/handling.md
What ships with it: 1 file
2.8 KB alongside SKILL.md
- INSTALL.md2.8 KB