# Send Smalltalk to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "smalltalk",
    "name": "Smalltalk",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/johnmci/smalltalk",
    "canonicalUrl": "https://clawhub.ai/johnmci/smalltalk",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/smalltalk",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=smalltalk",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md",
      "smalltalk-daemon.py",
      "smalltalk-dev-daemon.py",
      "smalltalk.py",
      "smalltalk_projects.py"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "smalltalk",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-03T19:06:25.297Z",
      "expiresAt": "2026-05-10T19:06:25.297Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=smalltalk",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=smalltalk",
        "contentDisposition": "attachment; filename=\"smalltalk-1.7.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "smalltalk"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/smalltalk"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/smalltalk",
    "downloadUrl": "https://openagent3.xyz/downloads/smalltalk",
    "agentUrl": "https://openagent3.xyz/skills/smalltalk/agent",
    "manifestUrl": "https://openagent3.xyz/skills/smalltalk/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/smalltalk/agent.md"
  }
}
```
## Documentation

### Smalltalk Skill

Execute Smalltalk code and browse live Squeak/Cuis images via MCP.

### Prerequisites

Get the ClaudeSmalltalk repo first:

git clone https://github.com/CorporateSmalltalkConsultingLtd/ClaudeSmalltalk.git

This repo contains:

MCP server code for Squeak (MCP-Server-Squeak.st)
Setup documentation (SQUEAK-SETUP.md, CLAWDBOT-SETUP.md)
This Clawdbot skill (clawdbot/)

### Setup

Set up Squeak with MCP server — see SQUEAK-SETUP.md
Configure Clawdbot — see CLAWDBOT-SETUP.md

### Usage

# Check setup
python3 smalltalk.py --check

# Evaluate code
python3 smalltalk.py evaluate "3 factorial"
python3 smalltalk.py evaluate "Date today"

# Browse a class
python3 smalltalk.py browse OrderedCollection

# View method source (instance side)
python3 smalltalk.py method-source String asUppercase

# View method source (class side)
python3 smalltalk.py method-source "MCPServer class" version
python3 smalltalk.py method-source MCPServer version --class-side

# List classes (with optional prefix filter)
python3 smalltalk.py list-classes Collection

# Get class hierarchy
python3 smalltalk.py hierarchy OrderedCollection

# Get subclasses  
python3 smalltalk.py subclasses Collection

# List all categories
python3 smalltalk.py list-categories

# List classes in a category
python3 smalltalk.py classes-in-category "Collections-Sequenceable"

# Define a new class
python3 smalltalk.py define-class "Object subclass: #Counter instanceVariableNames: 'count' classVariableNames: '' poolDictionaries: '' category: 'MyApp'"

# Define a method
python3 smalltalk.py define-method Counter "increment
    count := (count ifNil: [0]) + 1.
    ^ count"

# Delete a method
python3 smalltalk.py delete-method Counter increment

# Delete a class
python3 smalltalk.py delete-class Counter

### Playground (Default)

Stock image, ephemeral. Changes are discarded when daemon stops.
User says: "load Smalltalk skill" or "invoke Smalltalk" — no special flags.

# Start playground daemon
nohup python3 smalltalk-daemon.py start > /tmp/daemon.log 2>&1 &

### Dev Mode

User supplies their own image/changes pair. Changes persist across sessions.
User says: "load Smalltalk skill in dev mode with ~/MyProject.image"

# Start dev daemon with custom image
nohup python3 smalltalk-daemon.py start --dev --image ~/MyProject.image > /tmp/daemon.log 2>&1 &

Dev mode sets SMALLTALK_DEV_MODE=1 so the MCP server keeps the .changes file
(instead of redirecting to /dev/null). The supplied image must have a matching
.changes file alongside it.

### Common Commands

# Check status
python3 smalltalk.py --daemon-status

# Stop daemon
python3 smalltalk-daemon.py stop

# Restart in dev mode
python3 smalltalk-daemon.py restart --dev --image ~/MyProject.image

### Commands

CommandDescription--checkVerify VM/image paths and dependencies--daemon-statusCheck if daemon is running--debugDebug hung system (sends SIGUSR1, captures stack trace)evaluate <code>Execute Smalltalk code, return resultbrowse <class>Get class metadata (superclass, ivars, instance methods and classMethods)method-source <class> <selector> [--class-side]View method source code (supports "Class class" syntax or --class-side flag)define-class <definition>Create or modify a classdefine-method <class> <source>Add or update a methoddelete-method <class> <selector>Remove a methoddelete-class <class>Remove a classlist-classes [prefix]List classes, optionally filteredhierarchy <class>Get superclass chainsubclasses <class>Get immediate subclasseslist-categoriesList all system categoriesclasses-in-category <cat>List classes in a categoryexplain <code>Explain Smalltalk code (requires ANTHROPIC_API_KEY or OPENAI_API_KEY)explain-method <class> <sel> [--class-side] [--source <code>]Fetch method from image and explain it (or use --source/--source-file/--source-stdin to bypass daemon)audit-comment <class> <sel> [--class-side] [--source <code>]Audit method comment vs implementation (or use --source/--source-file/--source-stdin to bypass daemon)audit-class <class>Audit all methods in a class (instance + class side)generate-sunit <targets> [--force] [--class-name <name>]Generate SUnit tests for methods and file into image

### Environment Variables

VariableDescriptionSQUEAK_VM_PATHPath to Squeak/Cuis VM executableSQUEAK_IMAGE_PATHPath to Smalltalk image with MCP serverANTHROPIC_API_KEYAPI key for Anthropic Claude (preferred for LLM tools)ANTHROPIC_MODELAnthropic model (default: claude-opus-4-20250514)OPENAI_API_KEYAPI key for OpenAI (fallback for LLM tools)OPENAI_MODELOpenAI model (default: gpt-4o)LLM_PROVIDERForce LLM provider: anthropic or openai (auto-detected if not set)

### Using with Claude Code (MCP mode)

When Claude Code has a live Smalltalk image connected via MCP, explain-method and audit-comment can use pre-fetched source code instead of requiring a running daemon. Use --source, --source-file, or --source-stdin to pass the method source directly:

# Inline source (fetched via MCP, passed on command line)
python3 smalltalk.py explain-method SmallInteger + --source "+ aNumber <primitive: 1> ^ super + aNumber"

# Source from a file
python3 smalltalk.py audit-comment Integer factorial --source-file /tmp/factorial.st

# Source piped via stdin
echo "printString ^ self printStringLimitedTo: 50000" | python3 smalltalk.py explain-method Object printString --source-stdin

The three source flags are mutually exclusive. When none is provided, the daemon is used as before.

### Generating SUnit Tests

The generate-sunit command uses an LLM to generate SUnit test cases for Smalltalk methods and files them directly into the running image:

# Generate tests for a single method
python3 smalltalk.py generate-sunit "String>>asUppercase"

# Generate tests for multiple methods
python3 smalltalk.py generate-sunit "Random>>next" "Random>>nextInt:" "Random>>seed:"

# Generate tests for an entire class (all instance methods)
python3 smalltalk.py generate-sunit "OrderedCollection"

# Generate tests for class-side methods
python3 smalltalk.py generate-sunit "Date class>>today"

# Custom test class name
python3 smalltalk.py generate-sunit "String>>asUppercase" --class-name MyStringTests

# Overwrite existing test class
python3 smalltalk.py generate-sunit "String>>asUppercase" --force

# Run the generated tests
python3 smalltalk.py evaluate "StringGeneratedTest buildSuite run printString"

The generated TestCase uses standard SUnit assertions (assert:, assert:equals:, deny:, should:raise:) and is filed into a GeneratedSUnit-* category.

### Notes

Requires xvfb for headless operation on Linux servers
Uses Squeak 6.0 MCP server (GUI stays responsive if display available)
saveImage intentionally excluded for safety
MCPServer version 7+ required (v7 adds class-side method support)
Playground mode: ephemeral, .changes → /dev/null
Dev mode: persistent, .changes kept, requires --dev --image PATH
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: johnmci
- Version: 1.7.0
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-05-03T19:06:25.297Z
- Expires at: 2026-05-10T19:06:25.297Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/smalltalk)
- [Send to Agent page](https://openagent3.xyz/skills/smalltalk/agent)
- [JSON manifest](https://openagent3.xyz/skills/smalltalk/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/smalltalk/agent.md)
- [Download page](https://openagent3.xyz/downloads/smalltalk)