---
name: Robot Interaction
slug: robot-interaction
category: AI Engineering
description: Robot Interaction enables an AI agent to send non-blocking progress updates and ask blocking questions to a human via Telegram, with clear rules for when to ask versus proceed. Use it for ambiguous, irreversible, or high-risk decisions that need human input.
github: "https://github.com/mikeyobrien/ralph-orchestrator/tree/main/crates/ralph-core/data/robot-interaction-skill.md"
language: Rust
stars: 3099
forks: 285
install: "npx degit https://github.com/mikeyobrien/ralph-orchestrator/tree/main/crates/ralph-core/data ~/.claude/skills/data"
installs_to: ~/.claude/skills/data
source_path: crates/ralph-core/data/robot-interaction-skill.md
collection_size: 20
category_size: 2451
collection_url: "https://dirskills.com/collections/mikeyobrien/ralph-orchestrator"
added: 2026-08-17T07:09:10.184Z
last_synced: 2026-08-17T07:09:10.184Z
canonical_url: "https://dirskills.com/skills/robot-interaction"
---

# Robot Interaction

Robot Interaction enables an AI agent to send non-blocking progress updates and ask blocking questions to a human via Telegram, with clear rules for when to ask versus proceed. Use it for ambiguous, irreversible, or high-risk decisions that need human input.

**Install:**

```bash
npx degit https://github.com/mikeyobrien/ralph-orchestrator/tree/main/crates/ralph-core/data ~/.claude/skills/data
```

## README

# Human Interaction (RObot)

A human is available via Telegram. You can ask blocking questions or send non-blocking progress updates.

**Hard rule:** Do NOT send `progress` and `human.interact` in the same turn.  
If you need to ask, include the status in the question and skip the progress update.

## Progress updates (non-blocking)

Send one-way notifications — the loop does NOT block:

```bash
ralph tools interact progress "All tests passing — starting integration phase"
```

Use for: phase transitions, milestone completions, status updates, FYI messages.

## Asking questions (blocking)

Emit `human.interact` with your question — the loop blocks until the human replies or timeout:

```bash
ralph emit "human.interact" "Decision needed: [1 sentence]. Options: (A) ... (B) ... Default if no response: [what you'll do]"
```

Always include:
1. The specific decision (1 sentence)
2. 2-3 concrete options with trade-offs
3. What you'll do if no response (timeout fallback)

The human may also send proactive guidance at any time (appears as `## ROBOT GUIDANCE` in your prompt).

## When to ask (blocking)
- Ambiguous requirements that can't be resolved from context
- Irreversible or high-risk decisions (deleting data, public-facing changes)
- Conflicting signals where you need a tiebreaker
- Scope questions (should I also do X?)

## When NOT to ask
- Routine implementation decisions you can make yourself
- Status updates — use `ralph tools interact progress` instead
- Anything you can figure out from specs, code, or existing context
- Rephrasing a question already asked this session

## Rules
- One question at a time — batch related concerns into a single message
- After receiving a response, act on it — don't re-ask
- If guidance contradicts your plan, follow the guidance
- Prefer `progress` for FYI messages; reserve `human.interact` for decisions that need input
