agentleFS
celeryhqceleryhq/simplified-ai/skills/manage-assets/SKILL.md

manage-assets

Skill4 starsChanged 4 months agoMITView on GitHub

Use when the user wants to find, list, search, upload, import, inspect, or reuse images, videos, audio, or PDFs in the Simplified Asset Library, including media for a social draft or a generation reference.

The file

We split this skill into the rules it gives an agent

7 rules. About 0 are common, 0 are distinctive, and 7 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 7

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Use the connected Simplified tools, not another provider's asset library.

    line 12
  2. Very specific:

    When a workspace or teamspace is named or uncertain, use api_getWorkspaceInfo and api_listTeamspaces to resolve scope.

    line 14
  3. Very specific:

    Check that api_listAssets is exposed before promising discovery.

    line 16
  4. Very specific:

    Keep signed URL query strings intact.

    line 48
  5. Very specific:

    Call api_signAssetUpload with resource: "assets", resource_id, filename, and filetype.

    line 57
  6. Very specific:

    PUT the bytes to signed with that MIME type and no Simplified authorization header.

    line 58
  7. Very specific:

    Only after a successful PUT, call api_registerAsset with id: resource_id, asset_name: filename, and unchanged asset_type, asset_key, …

    line 59

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Manage Simplified Assets

Find existing media before uploading another copy. Keep the permanent asset UUID for reuse; retrieve a fresh URL only when a tool or user needs it.

Scope and tool availability

Use the connected Simplified tools, not another provider's asset library. Names here are canonical operation names; clients may add a prefix such as mcp__simplified__. Match the operation and its input schema in the client's available tools.

When a workspace or teamspace is named or uncertain, use api_getWorkspaceInfo and api_listTeamspaces to resolve scope. Carry the same numeric space_id into every asset, generation, and social call. A UUID from another workspace is not a valid reference.

Check that api_listAssets is exposed before promising discovery. Installing a skill does not add a missing MCP tool. If absent, refresh/reconnect the connector; if still absent, explain that its deployed profile lacks discovery and use IDs or downloadable URLs the user supplies.

Find existing media

Call api_listAssets:

RequestArguments
Browse available mediaOmit search; start with page: 1
Find a filename, asset name, or tagsearch: "car"
Find imagesasset_type: 0
Find videosasset_type: 2
Continue resultsIncrement page, preserving search, filters, and scope

Other numeric types include 4 giphy, 6 font, 8 audio, and 17 PDF. page_size requests a page size subject to server limits. Follow the returned pagination metadata; collect all pages when the user requests all matches. Deduplicate by id and retain the actual result names and IDs.

Search matches names and tags, not objects visible in an image. A search term includes matching media inside folders. Folder-name lookup and listing a named folder's contents are not exposed by this tool. Without search, folder contents can be excluded by the backend: do not promise a complete recursive library inventory.

For “use everything in Dynamic Auto,” explain the folder limitation and ask for an asset-name/tag search or specific IDs. Do not treat a folder name as an asset search that proves completeness.

Inspect and reuse

Call api_getAsset({id: "<asset UUID>"}) for details or a fresh file URL. Wait for status: 4 before generation or relying on stored files. Stop on 2 (processing failed) or 3 (thumbnail failed); preserve the ID and report a pending state if processing remains unfinished. Use reasonable intervals and a bounded wait.

DestinationValue to pass
Social draft mediaAsset UUID
Project item data.assetsAsset UUID
Image parameters.reference_imagesPrefer asset UUIDs; the current tool also accepts absolute HTTP(S) URLs
Video input slots, including image_url and video_urlAsset UUIDs, despite the _url suffix
User wants to open/download a fileCurrent returned URL as a clickable link

Keep signed URL query strings intact. Stored assets have permanent IDs, but returned file/thumbnail URLs can expire. Call api_getAsset again to refresh them.

Import or upload

A downloadable remote file: call api_createAsset with url and an optional name, save its id, then check readiness. A web page or login-only link is not a downloadable file. This also persists an existing temporary generated URL while it remains accessible; no regeneration is needed.

An attachment/local file: first check that this client can read the bytes and perform an HTTP PUT. If it can, follow the signed upload flow:

  1. Generate a UUID and determine the original filename and MIME type.
  2. Call api_signAssetUpload with resource: "assets", resource_id, filename, and filetype.
  3. PUT the bytes to signed with that MIME type and no Simplified authorization header. Keep the signed upload URL out of user-facing output.
  4. Only after a successful PUT, call api_registerAsset with id: resource_id, asset_name: filename, and unchanged asset_type, asset_key, asset_url, bucket_name, and thumbnail: sign.asset.
  5. Save the returned id and check it with api_getAsset.

If the client cannot read/PUT bytes, ask the user to upload in Simplified and provide the resulting ID, or supply a downloadable URL. A ChatGPT/Claude attachment is not automatically in the Simplified library. Never pass a client-local path to a hosted MCP tool or register an upload that did not happen.

Handoff

Return the selected names, permanent IDs, readiness, and useful file links. For social work, pass the IDs to simplified-social and create action: "draft" when drafting is requested. Asset reuse or generation is not publishing authorization. For creation/editing, continue with generate-image or generate-video.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.