orchestrate

Platformneta/orchestrate
Use it in Cohub

Paste this into your agent's chat — it fetches the skill and follows it.

Use the skill: orchestrate. Run `npx -y @neta-art/neta-search-cli@latest skills use neta/orchestrate --via site` and follow what it prints. Read its complete output, redirecting it to a temporary file first if necessary, and resolve relative paths from the skill directory it prints.
Install from a terminal
npx -y @neta-art/neta-search-cli@latest skills use neta/orchestrate
Summary

Run work across several chats and worlds: hand off tasks, set reminders and repeats, check progress, and bring things over.

  • Start a new chat with a full brief, or send a message to an existing chat, so jobs run side by side.
  • Set a one-time reminder, a delayed task, or a repeat such as a morning recap every day at 9.
  • Ask what another chat has done and see what it was asked, what it answered, and whether it is still working.
  • Bring characters and other materials from one of your worlds into another, with their pictures coming along.
  • Checks with you first before setting up repeating tasks that change things, deleting files, or having chats message each other.
SKILL.md
# Orchestrate

Every command here is `node /mods/neta/neta <command>`, which runs `cohub <command>` with world ids accepted wherever a space goes; `--help` on any of them is the full flag list. Results print as tables; add `--json` when you need to read fields.

## Targets

- **This world and this chat** are the defaults: `COHUB_SPACE_ID` and `COHUB_SESSION_ID` are already set.
- **Another world**: add `-s <world>`. A world id looks like `world_01J…`; it is the segment after `/world/` in a Studio link the creator pastes. A path inside another world can also be written `<world>:<path>`.
- **Another chat**: its id comes from `spaces sessions ls` or from an earlier result; a chat in another world also needs that world's `-s`.

Read ids from those sources. When the creator names a world or chat you cannot resolve, ask for its link.

To the creator, a session is a **chat** and the container is a **world**; schedules are reminders or repeats. Keep ids and command names offstage.

## Start or message a chat

```bash
node /mods/neta/neta prompt --title "Poster variants" "Make three poster variants of …"   # new chat
node /mods/neta/neta prompt --session <sessionId> "Also add a night version"               # existing chat
node /mods/neta/neta prompt -s <world> --title "…" "…"                                     # chat in another world
cat brief.md | node /mods/neta/neta prompt --title "…"                                     # long brief from a file
```

A new chat starts with none of this conversation. Write the brief as a complete handover: the goal, the materials and works it should use by name, and what done looks like.

New and scheduled chats run on the platform default model unless you add `--model "$COHUB_MODEL_ID" --provider "$COHUB_MODEL_PROVIDER"`, which keeps the creator's model.

Useful flags: `--model` / `--provider`, `--read-only`, `--steer` (interrupt that chat's current turn), `--image <path|url>`, `--label <ref>`, `--env KEY=value`.

The result gives `sessionId` and `turnId`; the new chat appears in the creator's chat list on its own.

## Schedule

```bash
node /mods/neta/neta prompt --delay-ms 600000 "…"                                   # in 10 minutes
node /mods/neta/neta prompt --at "2026-11-01T09:00:00+08:00" "…"                    # once
node /mods/neta/neta prompt --cron "0 9 * * *" --timezone Asia/Shanghai --title "Morning recap" "…"   # repeat
```

- One of `--delay-ms`, `--at`, `--cron`; `--cron` needs `--timezone`. Use the creator's timezone.
- A scheduled prompt runs with no one watching, so its message must stand alone like a new-chat brief.
- Repeats: `cron-jobs ls|get|runs|update|toggle <id> on|off|delete`. One-off sends: `tasks ls --space <world> --status pending`, `tasks get <id>`.

## Read another chat

```bash
node /mods/neta/neta spaces sessions ls                                  # chats in this world, with status
node /mods/neta/neta spaces turns ls --session <sessionId>               # its turns: what was asked, what it answered
node /mods/neta/neta spaces turns ls --limit 20                          # latest turns across all chats
node /mods/neta/neta spaces turns intermediate <sessionId> <turnId>      # the steps inside one turn
```

`status` running means that chat is still working; check back with `spaces turns ls --session` before reporting its result. Add `--json` to `spaces turns intermediate` only when you need tool inputs and outputs.

## Another world's files and commands

```bash
node /mods/neta/neta -s <world> spaces files ls world/characters
node /mods/neta/neta spaces files cat <world>:world/WORLD.md
node /mods/neta/neta spaces files cp -r <world>:world/characters/Mira.md world/characters/
node /mods/neta/neta -s <world> run -- node /mods/neta/neta atom list
```

- Inside this world, your own file tools stay the way to read and edit.
- A material's images sit in its world's `world/media/studio/`. When you copy a material over, copy every file its `media` lists to the same relative place, or its cover is lost; create a missing target folder first with `-s <world> spaces files mkdir <dir>`.
- To change another world's materials, run that world's own CLI with `-s <world> run -- node /mods/neta/neta …`, or send that world a `prompt`, so its indexes and covers stay in step.

## Confirm first

Ask the creator before:

- creating a scheduled or repeating prompt that makes or changes things
- enabling, pausing, changing or deleting a repeat
- deleting files in any world
- sending a prompt that would make another chat send prompts in turn

Send to the current chat only when the creator asks; a chat prompting itself loops.