Ic headsets
Agent skills, SDKs, and integration docs for Immersive Commons (immersivecommons.com) - Floor 10, Frontier Tower SF. Includes .claude/, .cursor/, .windsurf/ agent configs.
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.
2 things to look at
- 20 days oldThe repository was created 20 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 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.
What its author says it does
Copied from the file, not written here
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.
SKILL.md
9.4 KB, 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