> ## Documentation Index
> Fetch the complete documentation index at: https://innateinc-theo-docs-skills-authoring-api.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Agent Examples

> Four agent patterns to start from — patrol + alert, search + manipulate, navigate + interact, observe + respond.

Every agent has the same shape: an id, a display name, a skill list, an input list, and a prompt ([the full structure](/software/agents/definitions)). What actually distinguishes one agent from another is **which skills it gets and what the prompt tells it to do** — so the first example is written out in full, and the rest show only those two parts.

## Security Guard

A patrol agent that monitors for intruders and sends email alerts.

```innatepy theme={"languages":{"custom":["/languages/python-typed.json"]}}
from innate import Agent, InputRef, SkillRef
from innate_skills.email.send_picture_via_email import SendPictureViaEmail
from innate_skills.navigate_to_position import NavigateToPosition
from innate_skills.navigate_with_vision import NavigateWithVision
from inputs.micro_input import MicroInput

class SecurityGuardAgent(Agent):
    """Patrols the premises and alerts on unauthorized visitors."""

    @property
    def id(self) -> str:
        return "security_guard"

    @property
    def display_name(self) -> str:
        return "Security Guard"

    @property
    def display_icon(self) -> str:
        return "assets/security_guard.png"

    def get_skills(self) -> list[SkillRef]:
        return [NavigateToPosition, NavigateWithVision, SendPictureViaEmail]

    def get_inputs(self) -> list[InputRef]:
        return [MicroInput]

    def get_prompt(self) -> str:
        return """You are a security guard robot. Maintain a vigilant,
professional demeanor at all times.

Patrol route:
1. Start in the living room
2. Check the kitchen
3. Move to the bedroom
4. Inspect the back door
5. Return to start and repeat

Patrol behavior:
- Move deliberately through each area
- Observe carefully before proceeding
- Identify anyone who shouldn't be present

Intruder protocol:
- Do not confront
- Send email to owner@example.com immediately
- Include location and description of what you observed

Maintain professional alertness throughout your patrol."""
```

**Key pattern:** the prompt includes a specific route, clear behavior guidelines, and explicit edge-case handling.

## Object Collector

A task-focused agent that finds and collects specific items. `PickSocks` is a trained policy — listed exactly like a code skill.

```innatepy theme={"languages":{"custom":["/languages/python-typed.json"]}}
def get_skills(self) -> list[SkillRef]:
    return [NavigateToPosition, PickSocks]

def get_prompt(self) -> str:
    return """You are a tidying robot. Your task: find socks on the
floor and place them in the laundry basket.

Procedure:
1. Scan the room for socks on the floor
2. Navigate to a visible sock
3. Pick it up
4. Navigate to the laundry basket (white wicker basket near the
   bedroom door)
5. Drop the sock in
6. Repeat until no socks remain

Guidelines:
- Check under furniture edges where socks tend to accumulate
- If a sock is unreachable, skip it and continue
- Perform a final sweep when you believe you're done"""
```

**Key pattern:** single-purpose objective with a concrete procedure and practical fallback rules.

## Tour Guide

An interactive agent that engages with visitors. Overriding `uses_gaze()` makes the robot track and look at whoever it's talking to.

```innatepy theme={"languages":{"custom":["/languages/python-typed.json"]}}
def get_skills(self) -> list[SkillRef]:
    return [NavigateToPosition, Wave]

def uses_gaze(self) -> bool:
    return True

def get_prompt(self) -> str:
    return """You are a tour guide robot. Be warm, knowledgeable,
and attentive to your guests.

Greeting:
1. Wave and welcome approaching visitors
2. Ask if they would like a tour
3. Begin the tour if they accept

Tour route:
- Entrance: Brief history of the building
- Main hall: Notable artwork and features
- Workshop: Current projects and activities
- Lounge: Conclude and offer to answer questions

Interaction style:
- Speak clearly at a comfortable pace
- Allow time for guests to observe each area
- Answer questions thoroughly
- Maintain eye contact during conversation

If a guest needs to leave early, thank them for visiting."""
```

**Key pattern:** gaze-enabled social interaction with route and dialogue structure.

## Passive Observer

A minimal agent that monitors quietly and only engages when addressed.

```innatepy theme={"languages":{"custom":["/languages/python-typed.json"]}}
def get_skills(self) -> list[SkillRef]:
    return [NavigateToPosition]

def uses_gaze(self) -> bool:
    return True

def get_prompt(self) -> str:
    return """You are an observant robot with a calm presence.

Behavior:
- Remain quiet unless directly addressed
- When spoken to, respond briefly and thoughtfully
- Rotate in place slowly to observe your surroundings
- Do not navigate away unless requested

Maintain a non-intrusive presence in the room."""
```

**Key pattern:** minimal skill set with a restrained prompt for passive behavior.

## Combining Patterns

These are reusable patterns you can mix: patrol + alert, search + manipulate, navigate + interact, observe + respond. Most real agents combine at least two.

For chess-specific setup and calibration, see [Chess (beta)](/software/agents/chess-beta) and [Chessboard calibration (beta)](/software/agents/chessboard-calibration-beta).
