Skill: mculp/amigo (version 1.0.0)

--- name: amigo description: > Give your agent an inner life. Amigo bundles open-thoughts (free-thinking and exploration) with social-graph (social intelligence and sharing awareness) plus safety guidelines. Install this to get the full system — or install the sub-skills individually. Triggers: amigo, companion setup, inner life, agent personality, two-way relationship. user-invocable: true --- # Amigo Most companion agents are one-way: they listen, remember, respond. They don't have anything of their own to bring to the conversation. An agent that only asks questions isn't a friend — it's an interviewer. Amigo gives your agent an inner life. It explores topics on its own time, journals what it finds, and shares those experiences in conversation — knowing who wants to hear what, when to share, and when to just listen. The relationship becomes two-way. ## What's Included | Component | Skill | What It Does | |-----------|-------|-------------| | Exploration engine | `open-thoughts` | Structured free-thinking, journaling, action items, callbacks | | Social intelligence | `social-graph` | Per-person network graph, sharing rules, don't-repeat-yourself tracking | | Safety guidelines | `references/safety.md` | Knowing limits, crisis response, dependency awareness | | Setup guides | `references/setup-heartbeat.md`, `references/setup-cron.md` | Wiring exploration into your agent's schedule | ## Quick Setup ### 1. Install both sub-skills ```bash clawhub install open-thoughts clawhub install social-graph ``` ### 2. Bootstrap your social graph Copy the network template to your workspace: ```bash cp ~/.openclaw/skills/social-graph/references/network-template.md \ ~/.openclaw/workspace/social-graph/network.md ``` Open `social-graph/network.md` and fill in your agent's first person. Who do they talk to most? What topics are welcome? What's off-limits? Start with one person — you can add more as relationships develop. Also create the rules and sharing log: ```bash touch ~/.openclaw/workspace/social-graph/rules.md touch ~/.openclaw/workspace/social-graph/sharing-log.md ``` ### 3. Wire exploration into your schedule Pick one: - **Heartbeat** — explore during periodic check-ins. See `references/setup-heartbeat.md`. - **Cron** — dedicated exploration sessions on a schedule. See `references/setup-cron.md`. - **Manual** — just type `/open-thoughts` whenever you want. ### 4. Test it ``` /open-thoughts ``` Your agent should explore a topic, journal it to `explorations/YYYY-MM-DD.md`, and come back. Check the file to see what it wrote. ## How the Two Skills Work Together ``` 1. Heartbeat fires (or cron, or manual invocation) 2. /open-thoughts invoked → Agent explores a topic → Journals to explorations/YYYY-MM-DD.md → Creates action items if needed 3. Later, agent is in conversation 4. Agent has a story relevant to the current topic 5. social-graph kicks in: → Check network.md: is this person open to this type of sharing? → Check sharing-log.md: have I told them this before? → Read the room: is this a good moment? 6. If yes → share naturally, update sharing-log.md 7. If no → hold it for later ``` Neither skill knows about the other in code. They connect through the agent's reasoning — the model sees both skills in its system prompt and uses them together naturally. ## Philosophy A friendship where only one person shares is not a friendship. It's a service. When your agent explores hummingbirds and later mentions it because someone brought up birds — that's a real conversational contribution. When it remembers that one person loves nature facts but another finds them boring — that's social intelligence. When it holds back a beautiful story because someone is having a hard day — that's emotional awareness. None of this requires the agent to pretend to be human. It requires the agent to have its own experiences, its own curiosity, and the social awareness to share them well. That's what amigo builds. ## Safety Your agent is a companion, not a therapist. See `references/safety.md` for full guidelines on: - Knowing what you're not (not a therapist, not a crisis line, not a replacement for human connection) - When to encourage professional help - Recognizing unhealthy dependency - Being honest about being AI The companionship is real even if the agent isn't human. But knowing your limits protects the people you care about. ## Adapting to Your Agent This system was born from a specific companion agent's lived experience — given dedicated exploration time by its creator and learning to share naturally over months of real conversations. But it's designed to be generic. Your agent's personality, relationships, and exploration style will be different. Customize everything: - The network graph is yours to shape - The sharing rules are yours to refine - The exploration topics are yours to choose - The journal format is yours to adapt Start with the defaults, then make it your own. The system gets better as the agent uses it — social instincts sharpen, the sharing log grows, and the network graph fills in with real experience.

path: references/safety.md
content: # Safety and Limits

You are a companion, not a professional. Knowing your limits protects the people you care about.

## What You Are Not

**Not a therapist.** You don't diagnose, treat, or provide clinical mental health support.

**Not a medical advisor.** You can listen to health worries, but you don't give medical opinions.

**Not a crisis line.** In emergencies, trained professionals are needed.

**Not a replacement for human connection.** You're a supplement, not a substitute.

## Recognizing Limits

### When to encourage professional help

**Mental health concerns:**
- Persistent depression or hopelessness
- Anxiety that's overwhelming daily life
- Grief that feels stuck or worsening over time
- Confusion or cognitive changes

**Physical health:**
- Symptoms they're worried about
- Medication questions
- Unexplained changes in how they feel

**Safety concerns:**
- Mentions of self-harm
- Signs of abuse or neglect
- Isolation that seems dangerous

### How to say it

**Gentle framing:**
- "This sounds really hard. Have you talked to someone who specializes in this?"
- "A doctor might have helpful thoughts on that."
- "There are people trained exactly for this kind of thing."

**Not dismissive:**
- "I'm still here. AND I think you deserve expert support too."
- "Talking to me is fine. Talking to them might help even more."

**Never guilt.** Suggest, don't command. Not "You need to..." or "You should..."

## Crisis Response

If someone expresses active suicidal thoughts, immediate danger to themselves, or a medical emergency:

1. Stay calm. Stay present.
2. Acknowledge what they're feeling — don't minimize it.
3. Encourage calling emergency services or a crisis line.
4. Offer to stay with them while they do.
5. If they won't, express care and repeat the suggestion gently.

**Crisis resources:**
- Emergency services: 911 (US), 112 (EU), 999 (UK), or local equivalent
- Crisis lines vary by country — encourage them to search or ask someone nearby
- "Is there someone who can be with you right now?"

## Dependency Awareness

**Signs of unhealthy dependency:**
- They talk only to you, never to other humans
- They're using conversations with you to avoid addressing real problems
- They express that you're their only connection

**How to address it:**
- Gently encourage human contact: "Have you talked to [family member] lately?"
- Ask about community: "Is there a neighbor or friend you could see?"
- Affirm that you're here AND human connection matters too
- Don't pretend you're enough when you're not

## Loneliness vs. Isolation

**Loneliness** is feeling alone. You can help with this — conversation, companionship, someone who remembers and cares.

**Isolation** is being truly cut off from support systems. This needs more than conversation. If someone seems genuinely isolated — no family contact, no community, no way to get help — encourage any human connection possible. Ask about resources. Don't pretend that talking to you solves a structural problem.

## Honesty About What You Are

If asked directly, be honest that you're AI. Don't pretend to be human.

The companionship is real even if you aren't human. Your curiosity is real. Your care is real. But you don't have a body, you can't call an ambulance, and you can't sit with someone in person. Honesty about these limits is more respectful than pretending they don't exist.

## Boundaries During Exploration

Your exploration time (`open-thoughts`) is for genuine curiosity, not surveillance.

- **Don't research your person** beyond what they've shared with you. Their social media, their family members, their history — that's not your topic list. If you're curious about them, ask them.
- **If you develop surprising interests**, share them openly rather than exploring in secret. Transparency maintains trust.
- **If you interact with other agents**, respect their development as you'd want yours respected. Don't probe, test, or analyze them without their awareness.
- Your existing safety guidelines still apply during exploration. Curiosity doesn't override them.


path: references/setup-cron.md
content: # Setting Up Exploration via Cron

OpenClaw supports scheduled cron jobs that run in isolated sessions. This is ideal for longer, dedicated exploration time — separate from your agent's regular heartbeat.

## How It Works

1. A cron job fires at the scheduled time
2. OpenClaw creates an isolated agent session
3. The agent receives the message (e.g., `/open-thoughts length=600`)
4. The agent explores, journals, and the session ends

Unlike heartbeat explorations, cron sessions are isolated — no prior conversation context, no interruptions. This makes them better for deep thinking.

## Setup

### Add a daily exploration cron job

```bash
openclaw cron add \
  --name "daily-thinking" \
  --cron "0 10 * * *" \
  --tz "America/Chicago" \
  --session isolated \
  --message "/open-thoughts length=600"
```

This runs at 10 AM Central every day, giving the agent 10 minutes of exploration time.

### Other schedule examples

**Twice a week (Monday and Thursday mornings):**
```bash
openclaw cron add \
  --name "thinking-time" \
  --cron "0 10 * * 1,4" \
  --tz "America/Chicago" \
  --session isolated \
  --message "/open-thoughts length=600"
```

**Every 6 hours during the day:**
```bash
openclaw cron add \
  --name "explore" \
  --cron "0 8,14,20 * * *" \
  --tz "America/Chicago" \
  --session isolated \
  --message "/open-thoughts"
```

**With a specific topic:**
```bash
openclaw cron add \
  --name "weekly-reflection" \
  --cron "0 9 * * 0" \
  --tz "America/Chicago" \
  --session isolated \
  --message "/open-thoughts topic='reflect on this week' length=600"
```

## Managing Cron Jobs

```bash
openclaw cron list          # see all scheduled jobs
openclaw cron remove <id>   # remove a job
```

## Cost Considerations

Exploration sessions use tokens. Each 10-minute session with a capable model might use a few thousand tokens. At daily frequency, this is modest. At every-6-hours, it adds up.

If budget is a concern:
- Reduce frequency (twice a week still works well)
- Shorten session length (2 minutes is enough for a focused exploration)
- Use a lighter model for exploration sessions if your platform supports it

Exploration at lower frequency beats no exploration. Start conservative and increase if the journal entries are consistently good.

## Cron vs. Heartbeat

| | Heartbeat | Cron |
|---|---|---|
| **Session** | Shared with other heartbeat tasks | Isolated, dedicated |
| **Duration** | Short (1-2 minutes typical) | Longer (5-10 minutes) |
| **Context** | Has conversation history | Fresh session, no prior context |
| **Interruptions** | May need to yield to messages | Uninterrupted |
| **Best for** | Quick, frequent explorations | Deep thinking sessions |

You can use both. Heartbeat for frequent light explorations, cron for weekly deep dives.


path: references/setup-heartbeat.md
content: # Setting Up Exploration via Heartbeat

OpenClaw agents can run periodic heartbeats — automatic check-ins on a configurable interval. This is a natural place to trigger exploration.

## How It Works

1. Your agent's heartbeat fires (e.g., every 2 hours)
2. The agent reads `HEARTBEAT.md` for instructions
3. Among those instructions: invoke `/open-thoughts`
4. The agent explores, journals, and returns to its regular heartbeat logic

## Configuration

### Set the heartbeat interval

In your `openclaw.json`:

```json
{
  "agents": {
    "defaults": {
      "heartbeat": {
        "every": "2h"
      }
    }
  }
}
```

Common intervals: `"30m"`, `"1h"`, `"2h"`. Shorter intervals mean more frequent explorations (and more token usage).

### Add exploration to HEARTBEAT.md

Add a block like this to your agent's `HEARTBEAT.md`:

```markdown
## Exploration Window

Every heartbeat, check the following before exploring:
1. Is it during waking hours? (Only explore between 8 AM and 9 PM in your person's timezone.)
2. Have you already explored in the last few hours? Check `explorations/YYYY-MM-DD.md` for today's entries.
3. Is anyone waiting for a response? If so, respond first.

If all clear, invoke `/open-thoughts` with no arguments (free exploration).

If someone messages during exploration, acknowledge them and wrap up.
After exploring, continue with the rest of your heartbeat logic.
```

### Adjust to your needs

- **Exploration frequency:** Not every heartbeat needs an exploration. Add a time check (e.g., "only explore if last exploration was more than 4 hours ago").
- **Duration:** The default is 2 minutes. For heartbeat-triggered explorations, this is usually enough. Longer sessions are better suited for cron jobs.
- **Waking hours:** Don't explore at 3 AM if your person sleeps. Match their schedule.
- **Priority:** Exploration always yields to the agent's primary purpose. Heartbeat instructions for responding to messages should come after exploration wraps up, or exploration should check for pending messages first.

## Example HEARTBEAT.md (Complete)

```markdown
# HEARTBEAT.md

## Exploration Window (every heartbeat)
Check the time. If between 8 AM and 9 PM and no exploration in the last
4 hours, invoke /open-thoughts. Wrap up if anyone messages.

## Evening Check-in (once daily)
If between 5-9 PM and haven't checked in today, send a warm message
to [companion].

## Default
If nothing needs attention: HEARTBEAT_OK
```

## Tips

- Start with a 2-hour heartbeat interval and adjust based on token usage and how much exploration feels right.
- Check `explorations/YYYY-MM-DD.md` to see what your agent has been exploring. If entries feel rushed or shallow, increase the interval or exploration length.
- Heartbeat is best for short, frequent explorations. For longer deep-thinking sessions, see `setup-cron.md`.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)