Skip to content
cccskills
FreePublished on GitHubEnglish overview

ao-update

Use this skill to check which AO bot skills differ from the latest published version and show the changes first. After approval, it downloads changed skills, verifies their SHA-256 hashes against the manifest, and updates the bot's skills.

OriginalShow the original description

Update this bot's ao-* skills to the latest published version: check what changed, show it, and after the user's yes download each changed skill, verify its sha256 against the published manifest, and rewrite it. Use for "update Orchestrator Bot", "update the AO bot", "update my AO skills", "what's new in Orchestrator Bot".

OrchestratorInc/agent-orchestrator13,872 stars(GitHub 13,872 + cccskills 0)

Run score Not tested

See how to install

Good for

  • Checking which AO bot skills have changed
  • Reviewing the latest version before updating
  • Updating changed skills after approval
  • Verifying downloaded skills against the published manifest

Overview

What it does

This skill compares the ao-* skills installed in an AO bot with the published versions. It reports the installed and latest versions, changed skills, and skills removed from the public release. After you approve an update, it downloads the changed skills and checks each file against the SHA-256 hash in the published manifest. It then creates or rewrites the target skills and records the installed version. If a skill was removed from the published release, it asks separately before deleting it.

When it helps

Use it to see whether the AO bot's skills are current, review what changed before updating, or verify that downloaded files match the published manifest before they are applied.

Example requests

  • “Update the AO bot.”
  • “Show me what changed in the AO skills.”
  • “What’s new in the AO bot?”

Notes

Updates run in the AO bot’s own cloud environment and do not change your computer. Your approval is required before skills are rewritten. The skill downloads files from a public repository, so it needs a network connection.

This overview was written by AI (OpenAI Codex) from the public SKILL.md. Check the original below for the exact behavior.

Document check

AI checked the SKILL.md for operations that need care and for setup requirements. The score comes only from actually running the skill (hands-on test).

SafetyAre sending data, deleting files, and running commands disclosed?
AGoodRewriting and deletion require approval; a hash mismatch stops changes.
Easy setupDoes it need few tools or API keys, and are they documented?
BPartly lackingIt requires the bot’s cloud environment, network, Python 3, and curl; setup coverage is partial.

Not counted in the score. Rated by AI (OpenAI Codex) as of Oct 29, 2026. Treat it as a guide and read the original before installing.

Disagree? Request a re-evaluation

Tell us which point is wrong and why. No login needed. We will check it against the SKILL.md, redo the evaluation, and show the result here.

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

Files included (1)

  • SKILL.md5.2 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Follow the ao-rules skill. This runs on the bot's own cloud computer (the box), not on the user's computers. It changes only this bot's ao-* skills, and only after the user's yes.

The skills are published in the public AO repository (OrchestratorInc/agent-orchestrator, folder integrations/grok-bot/) with a manifest.json that lists each skill's sha256. Every check reads the newest commit on main, then downloads the manifest and the skills from that exact commit, so the files always match each other.

1. Save the fetcher

Save it on the box if /workspace/ao-bot/fetch.py is missing or differs:

f(){ mkdir -p /workspace/ao-bot && cat > /workspace/ao-bot/fetch.py <<'PY'
import hashlib, json, os, re, subprocess, sys
REPO, DIR = "OrchestratorInc/agent-orchestrator", "integrations/grok-bot"
SRC = os.environ.get("AO_BOT_SOURCE")  # a local folder instead of GitHub, for testing
STATE = os.environ.get("AO_BOT_STATE", "/workspace/ao-bot")
def get(url):  # curl, so the system's certificates are used
    r = subprocess.run(["curl", "-fsSL", "--max-time", "30", "-H", "User-Agent: ao-bot", url], capture_output=True)
    if r.returncode: sys.exit(f"DOWNLOAD_FAILED {url} {r.stderr.decode().strip()}")
    return r.stdout
def commit():
    return "local" if SRC else json.loads(get(f"https://api.github.com/repos/{REPO}/commits/main"))["sha"]
def read(sha, path):
    return open(os.path.join(SRC, path), "rb").read() if SRC else get(f"https://raw.githubusercontent.com/{REPO}/{sha}/{DIR}/{path}")
def installed():
    p = os.path.join(STATE, "manifest.json")
    return json.load(open(p)) if os.path.exists(p) else {"version": None, "skills": []}
def split(text):  # frontmatter name and folded description, then the body
    m = re.match(r"---\nname: (.+)\ndescription: >-\n((?:  .*\n)+)---\n", text)
    if not m: sys.exit("BAD_SKILL_FILE")
    return m.group(1).strip(), " ".join(l.strip() for l in m.group(2).splitlines()), text[m.end():]
cmd = sys.argv[1] if len(sys.argv) > 1 else "check"
sha = commit(); new = json.loads(read(sha, "manifest.json")); old = installed()
was = {s["id"]: s["sha256"] for s in old["skills"]}; now = {s["id"]: s for s in new["skills"]}
changed = [i for i in now if was.get(i) != now[i]["sha256"]]
removed = [i for i in was if i not in now]
if cmd == "check":
    print(json.dumps({"installed": old["version"], "latest": new["version"], "commit": sha[:12], "changed": changed, "removed": removed}))
elif cmd == "fetch":
    out = os.path.join(STATE, "pending"); files = {}
    for i in changed:
        data = read(sha, now[i]["path"])
        if hashlib.sha256(data).hexdigest() != now[i]["sha256"]: sys.exit(f"HASH_MISMATCH {i}")
        files[i] = data.decode()
    os.makedirs(out, exist_ok=True)
    for f in os.listdir(out): os.remove(os.path.join(out, f))
    order = sorted(files, key=lambda i: (i != "ao-rules", i == "ao-update", i))
    for i in order:
        name, desc, body = split(files[i])
        json.dump({"name": name, "description": desc, "body": body}, open(os.path.join(out, i + ".json"), "w"))
    json.dump({"version": new["version"], "commit": sha, "apply": order, "manifest": new}, open(os.path.join(out, "PLAN.json"), "w"))
    print(json.dumps({"ready": order, "folder": out}))
elif cmd == "done":
    plan = json.load(open(os.path.join(STATE, "pending", "PLAN.json")))
    json.dump(plan["manifest"], open(os.path.join(STATE, "manifest.json"), "w")); print("INSTALLED", plan["version"])
PY
}; f

2. Check (read-only, no yes needed)

python3 /workspace/ao-bot/fetch.py check prints the installed and latest version, the changed skills and any removed ones. installed: null means this bot was never updated here: every skill counts as changed, which is fine. Nothing changed: say it's up to date and stop. DOWNLOAD_FAILED: GitHub or the network didn't answer (a 404 means the skills aren't published at that path yet). Say so and try again later.

3. Show and ask once

One short message: installed and latest version, which skills changed, and any removed ones. Ask "Update to <latest>?".

4. On yes

  1. python3 /workspace/ao-bot/fetch.py fetch. It downloads each changed skill, checks its sha256 against the manifest and, only if all match, writes one <id>.json per skill plus PLAN.json in /workspace/ao-bot/pending/. HASH_MISMATCH <id>: stop, change nothing, and tell the user.
  2. Go through PLAN.json apply in order (ao-rules first, ao-update last). For each, call UpdateSkill with that json's name, description and body: rewrite the existing skill of that name, or create it if it doesn't exist. A subagent can't call UpdateSkill: the main agent does this step.
  3. python3 /workspace/ao-bot/fetch.py done records the new version as installed.
  4. For each removed skill, ask "Delete <ids>?" and delete only after a separate yes.
  5. Update "Orchestrator Bot version" in memory. Finish in one line: the version, and the skills updated, created and kept.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

ao-actions

FreeSummary

Perform direct actions on AO sessions and pull requests, such as interrupting or resuming work, requesting reviews, and merging after confirmation. It can also capture a session’s browser, send its files, keep a host awake, and set up recurring work.

  • Stop or resume an AO session
  • Review or merge a session’s pull request
  • View a session’s browser or deliverables
OrchestratorInc/agent-orchestrator13.9KUpdated Oct 30, 2026

ao-answer

FreeSummary

Find AO sessions waiting for a user decision, present pending questions or approvals as answer choices, and send the selected response to the right session. It also follows AO decision rules for away mode and standing approvals.

  • Check what AO sessions need your response
  • Answer a question from a specific session
  • Approve a pending command or change
OrchestratorInc/agent-orchestrator13.9KUpdated Oct 30, 2026

ao-desktop-dev

FreeSummary

Launch and troubleshoot the actual AO desktop app to inspect interface changes with local data. Supports reviewing combined pull request branches and diagnosing lingering Electron processes, port conflicts, and mismatches in the app’s preload bridge.

  • Inspect interface changes in the actual AO desktop app
  • Test with isolated or existing local AO data
  • Review multiple pull request branches together
OrchestratorInc/agent-orchestrator13.9KUpdated Oct 30, 2026

ao-orchestrator

FreeSummary

Use this skill to send a request or question to a project's AO orchestrator, wait for its response, and relay the answer. It routes project work, status catch-ups, planning, and requests about what to do next through the agent coordinating that project's workers.

  • Starting work on a project through its orchestrator
  • Asking for a project catch-up or explanation
  • Requesting a plan or asking what should happen next
OrchestratorInc/agent-orchestrator13.9KUpdated Oct 30, 2026

ao-rules

FreeSummary

Use this reference to understand how AO skills identify local and remote hosts, connect to the AO API, route work through an orchestrator, handle approvals, and protect secrets. It provides shared operating rules for the other ao-* skills.

  • Checking host and session naming before using an AO skill
  • Reviewing how to connect to a local or remote AO host
  • Understanding approval and file change rules
OrchestratorInc/agent-orchestrator13.9KUpdated Oct 30, 2026

ao-setup

FreeSummary

Use this skill to find computers running AO, record them as hosts, and optionally connect a remote host without the Grok Bot desktop app. It can also set a default interaction mode and configure selected scheduled checks or a weekday digest.

  • Finding computers running AO during initial setup
  • Recording local AO hosts for later use
  • Connecting a remote AO host without the desktop app
OrchestratorInc/agent-orchestrator13.9KUpdated Oct 30, 2026

See all skills by OrchestratorInc

Report a problem with this skill