agent-activity
Streams what the agent is doing into the room, as rows the desktop client renders in an **events drawer** above the composer (collapsed: avatar, pulsing dots,…
Install marketplace skills, activate cloud tools, check whether installed skills are up to date, or remove them — without the owner opening the Marketplace. Use when the owner asks to install/activate/enable/remove a skill or cloud tool, asks "are my skills up to date?", or
$ npx -y skills add sonichi/sutando --skill marketplace --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/marketplaceContext preview
The summary Claude sees to decide when to auto-load this skill.
Install marketplace skills, activate cloud tools, check whether installed skills are up to date, or remove them — without the owner opening the Marketplace. Use when the owner asks to install/activate/enable/remove a skill or cloud tool, asks "are my skills up to date?", or
name: marketplace description: Install marketplace skills, activate cloud tools, check whether installed skills are up to date, or remove them — without the owner opening the Marketplace. Use when the owner asks to install/activate/enable/remove a skill or cloud tool, asks "are my skills up to date?", or hands you a use-case doc and asks you to set up what it needs.
The owner is already signed in to Sutando Cloud (desktop onboarding), so everything the Marketplace UI does can be done from here: activate a cloud tool, install a local skill, update skills, remove them.
The script lives next to this file. Run it with `python3`:
M="<this skill's directory>/scripts/marketplace.py" python3 "$M" find "lead enrichment" # search (add --kind skill|cloud_tool|connector) python3 "$M" status # owned vs on this machine python3 "$M" install intent-leads campaign-runner # PLAN only — writes nothing python3 "$M" install intent-leads campaign-runner --yes python3 "$M" update # list missing / outdated skills python3 "$M" update --yes # re-fetch them (never charges) python3 "$M" uninstall live-preview # PLAN only python3 "$M" uninstall live-preview --yes
Add `--json` for machine-readable output. One `install` call takes skills and cloud tools together; the script works out which is which.
1. **Collect the slugs.** From the owner's request, or from a use-case doc (read it; docs list what they need under a `Requires:` heading). If a name isn't an exact slug, run `find` first. 2. **Plan.** Run `install <all slugs>` without `--yes`. Show the owner the plan in a sentence or two (what gets installed or activated, what's already set up, what's skipped and why). 3. **Confirm when it costs something.** Exit code `3` means the plan spends credits once, or activates a cloud tool that charges per use (the plan says "leads charges per use: 5 credits per result"): tell the owner the price and get their explicit OK first. Exit code `0` means it's free: go ahead. Never pass `--yes` to `uninstall` without the owner's OK. 4. **Apply.** Re-run the same command with `--yes`. One failed item doesn't stop the rest. 5. **Report.** Say what's ready and what failed, using the reasons the script prints (not enough credits, plan too low, not found…). 6. **Use it now; restart only when told.** A newly activated cloud tool is usable at once through `station_find` / `station_call` (the output says "usable now through station_call", `usable_now` in JSON). Only if the output says `RESTART REQUIRED` (`restart_required: true`) did the running engine start without the Station, or for another account; then tell the owner exactly once, after everything else:
> New cloud tools are active on your account, but I can only use them after > an engine restart: open **Agent settings** (the bot icon, bottom left), > scroll down to **Runtime**, and click **Restart engine**. Restarting ends > my current session; your tasks and files are kept.
When the output says the desktop app hasn't connected the engine to AG2 Cloud yet (`restart_after_sign_in: true`), the tools need that same one restart once the owner signs in; re-check with `status` then.
Never restart the core yourself. Installed **skills** need no restart; they are usable right away. 7. **Price before the first paid call.** `station_find` marks a metered tool `confirm_before_call: true`. Before the first `station_call` to such a tool in a conversation, state its price from `pricing` ("5 credits per result") and wait for the owner's OK.
Run `status`. Skills show `ok`, `missing` (owned but not on this machine), `outdated` (local version behind the marketplace), `disabled`, or `bundled` (ships with Sutando). If anything is missing or outdated, offer `update --yes`. Updating never charges.
`install` skips them with a note, and `find` / `install` match them by exact slug. Connect them from chat with the `connect-apps` skill, which sends the owner a Connect card and picks the request up once they sign in.
verified against the marketplace's sha256. Unsigned bundles are refused. Skills bundled with Sutando are never replaced.
List the slugs under a `Requires:` heading:
## Requires - Cloud tools: icp-mapper, intent-leads, lead-enricher, email-drafter - Skills: campaign-runner, campaign-responder
My AI Stand — Realtime by Day, Rewriting Itself by Night. Summon my AI superpower. Voice, vision, screen, meetings, calls when I'm engaged. Learns my patterns, ships its own code when I'm not. Runs across my Macs, interacts with people & their Stands.
Repo: sonichi/sutando
Streams what the agent is doing into the room, as rows the desktop client renders in an **events drawer** above the composer (collapsed: avatar, pulsing dots,…
Local Agent Registry — a standalone, dependency-free service that tracks running Claude Code (and other) agent instances. Agents self-register on startup and…
**Prefer the `ag2-space` MCP tools when they are connected and the room exposes them** — availability is per-room and per-actor, so check…
Deterministic final-answer normalizer — a last-step pass for any task that ends in a *precise* answer (a number, a short string, a comma-list). Applies the…
Transcribes audio files and voice notes to text via Gemini 2.5-flash. Integrates with Slack, Discord, and Telegram bridges so voice clips surface as readable…
Act back on the owner's Bee wearable — the TOOL half of the Bee integration (channels-vs-tools split). The Bee CHANNEL (ag2-sparrow's `sources/bee.py` watcher)…