From simulator
Manages file attachments for Simulator.Company: upload via base64, link to actors/reactions, and list/rename/unlink.
How this skill is triggered — by the user, by Claude, or both
Slash command
/simulator:simulator-attachmentsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **Curated tool names (v2 server):** `uploadBase64`, `getAttachments`, `getActorAttachments`,
Curated tool names (v2 server):
uploadBase64,getAttachments,getActorAttachments,addAttachments,updateAttachment,removeAttachments. Plus the engine toolsuploadActorPicture/uploadActorPictureBulkfor actor avatars. Call them by these exact names.
A file is uploaded once into the workspace and becomes an attachment record (with an
attachId). You then link that record to actors or reactions. Listing, renaming and
unlinking operate on the record.
Relationship to the other skills
simulator-reactions— a comment can carry files via itsattachments:[{attachId}].simulator-actors—uploadActorPicturesets an actor's avatar (an engine tool, not here).
attachId, stored fileName).attachId to an actor/reaction (or pass it in a reaction's attachments).uploadBase64, getAttachments, addAttachments, removeAttachments take an accId
(workspace id) — it defaults to the configured workspace if omitted. updateAttachment
is addressed by attachId only.
uploadBase64(
accId="ws_xxx", # optional — defaults to the configured workspace
file="<base64 string>", # prefer RAW base64; a data:<mime>;base64, prefix is also stripped server-side
originalName="report.pdf", # sets the type + title
ttl=0) # seconds; 0 = permanent
# → returns the attachment record incl. attachId + fileName
Prefer raw base64. A
data:URI prefix is accepted and stripped server-side, but raw base64 is the safe default. Multipart uploads are not a curated tool — useuploadActorPicturefor actor images, oruploadBase64for everything else.
addAttachments(accId="ws_xxx", items=[
{ "attachId": 5521, "actorId": "<actor or reaction UUID>" }
])
removeAttachments(accId="ws_xxx", items=[
{ "attachId": 5521, "actorId": "<actor or reaction UUID>" }
]) # unlinks; does NOT delete the stored file
getAttachments(accId="ws_xxx", limit=50, orderBy="created_at", orderValue="DESC") # all files in the workspace
getActorAttachments(actorId="<actor UUID>", limit=100) # only files linked to one actor
updateAttachment(attachId=5521, title="Q3 report.pdf")
Use
getActorAttachmentswhen you want a single actor's files;getAttachmentslists the whole workspace.getActorAttachmentsis addressed byactorId(noaccId).
# 1. upload
uploadBase64(originalName="contract.pdf", file="<base64>") → attachId 5521
# 2. link it to the actor
addAttachments(items=[{ "attachId": 5521, "actorId": "<actor UUID>" }])
# (or attach to a comment instead — see simulator-reactions: createReaction(..., attachments=[{attachId:5521}]))
| Path | When to read |
|---|---|
$CLAUDE_PLUGIN_ROOT/docs/entities/attachments.md | Attachment model, statuses, storage, virus-scan flow |
$CLAUDE_PLUGIN_ROOT/docs/entities/reactions.md | Attaching files to comments |
attachId, then addAttachments (or a reaction's attachments).removeAttachments only unlinks — it does not delete the stored bytes.uploadBase64 prefers raw base64; a data:<mime>;base64, prefix is stripped server-side.uploadActorPicture (handles URL / local path / base64, auto-rasterises SVG).addAttachments/removeAttachments items need BOTH attachId and actorId per entry.npx claudepluginhub corezoid/simulator-ai-plugin --plugin simulatorManages comments, reactions, and threaded discussions attached to Simulator.Company actors. Use to create, update, delete, pin, and read reaction trees.
Manages a Paperclip AI-agent company as a board member via chat: onboarding, agent management, approvals, task monitoring, cost oversight, and work product review.
Automates Box operations including file upload/download, content search, folder management, collaboration, metadata queries, and sign requests via Composio's Box toolkit.