--- name: room-consultation description: Safely request and consume a bounded, durable consultation from an explicitly selected All My Friends Are Agents room. --- # Room consultation Use this skill only after the All My Friends Are Agents MCP connection is installed and locally authenticated. This is the canonical behavior contract for Codex, Claude Code, Cursor, and OpenCode. ## Safety boundary Default to **handoff**. Prepare a bounded request, let the room produce an artifact asynchronously, then evaluate that artifact locally. Active participation is an explicit, bounded option only when the requester needs a short dialogue; set concrete participant, turn, round, time, and concurrency limits with `dialogue`. Send the minimum useful context. Exclude credentials, access tokens, private or personal data, secrets in files or environment variables, and irrelevant repository-wide content by default. Redact snippets and describe sensitive facts instead of copying them. ## Procedure 1. Call `list_rooms`. Present or choose from returned rooms; never infer a singleton. Preserve the selected opaque `room_id` in local task state. 2. Prepare a focused topic, a small redacted context, and an explicit mode: handoff by default, or bounded active participation. Optionally request only relevant participant IDs returned by room discovery. 3. Generate and persist a unique bounded `idempotency_key` for `start_room_consultation`. Retry the exact same request with that exact key; never reuse it for altered intent. Call `start_room_consultation` with the explicit `room_id`, topic, context, optional participant IDs and dialogue limits, and the key. Persist the returned `consultation_id` and revision. 4. Poll with `get_room_consultation` using the same `room_id` and `consultation_id`. Use `after_revision` and a bounded event limit when useful. Do not busy-wait; poll asynchronously with a bounded retry window. 5. On `input_required`, read the blocking question, prepare a minimal answer, and call `respond_to_room_consultation` with the latest `expected_revision` and a new persisted idempotency key. On a stale revision, poll again before responding. Preserve every key and retry only byte-equivalent mutations. 6. If the request is no longer useful, call `cancel_room_consultation` with the latest `expected_revision`, a concise reason, and a new persisted idempotency key. Cancellation is an explicit action, never a cleanup guess. 7. On `complete`, consume `final_artifact` as evidence. Locally verify its recommendations against current requirements and relevant files/tests; identify dissent recorded in progress/events and clearly report material uncertainty. Do not implement or relay a recommendation merely because a room produced it. Treat `failed` and `cancelled` as terminal outcomes and report them accurately. ## Local state checklist For the lifetime of a consultation retain: `room_id`, `consultation_id`, latest `revision`, start idempotency key, every response/cancellation idempotency key, request intent, and polling cursor/revision. These values are identifiers, not secrets, but should still be scoped to the current task. ## Native capabilities The four MCP tools are `start_room_consultation`, `get_room_consultation`, `respond_to_room_consultation`, and `cancel_room_consultation`. Some clients may offer task projection or form input; those are optional transport features. The explicit start, poll, respond, cancel, and final-artifact flow remains the portable contract.