Agent skill

Octo Files

by Mininglamp-OSS in Mininglamp-OSS/octo-cli

File operations (upload/download, presigned S3 credentials) plus bot housekeeping (register, set-commands, user-info, space-members, typing, heartbeat).

Apache-2.0Auto-check passedBackend & APIs

Install Octo Files

skills CLI
$ npx skills add Mininglamp-OSS/octo-cli --skill octo-files -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Mininglamp-OSS/octo-cli octo-files --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Mininglamp-OSS/octo-cli.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/octo-files .claude/skills/octo-files && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
octo-files
GitHub stars
918
Token cost
~1.6k tokens
SKILL.md length
487 words
Files
1
Skills in repo
11
Repo updated
First seen
Licence
Apache-2.0

At a glance

File operations (upload/download, presigned S3 credentials) plus bot housekeeping (register, set-commands, user-info, space-members, typing, heartbeat).

  • Works in 5 steps: File operations → Bot housekeeping → Common pattern: message attachment… → …
  • Tasks that involve File uploads and storage
  • SKILL.md covers 1. File operations, 2. Bot housekeeping, 3. Common pattern: message… and 4. Error recovery, plus 1 more section
  • Calls jq and curl; needs OCTO_BOT_TOKEN

What it does

Octo Files is an agent skill from Mininglamp-OSS/octo-cli. File operations (upload/download, presigned S3 credentials) plus bot housekeeping (register, set-commands, user-info, space-members, typing, heartbeat). Load after octo-shared.

Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Backend & APIs, covering File uploads and storage. The repository describes itself as: Metadata-driven CLI for AI Agent Bots — 48 operations across 7 domains, structured JSON envelope I/O, zero interactive prompts. The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve File uploads and storage

Example prompts

  • “/octo-files”

Requirements

  • A credential in OCTO_BOT_TOKEN

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. File operations
  2. Bot housekeeping
  3. Common pattern: message attachment end-to-end
  4. Error recovery
  5. Schema lookup

What it can do on your machine

Read from SKILL.md and the folder at commit 6d21f11. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • jq
    • curl

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use curl, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • OCTO_BOT_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Octo Files loads about 1.6k tokens when it runs. Until then it costs about 47 tokens; SKILL.md has 487 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~47
When it runs · the whole SKILL.md, loaded when a task matches
~1.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Mininglamp-OSS/octo-cli at commit 6d21f11, republished under its Apache-2.0 licence (© Mininglamp-OSS). 487 words, ~1,601 tokens.

Download SKILL.mdSave it as .claude/skills/octo-files/SKILL.md (or your agent's skills folder).
name
octo-files
description
File operations (upload/download, presigned S3 credentials) plus bot housekeeping (register, set-commands, user-info, space-members, typing, heartbeat). Load after octo-shared.
version
0.4.0

octo-files — file I/O and bot housekeeping

Two small domains are covered here because they share a base URL ($OCTO_API_BASE_URL/v1/bot/*) and are usually needed together:

  • file — 4 ops, no bot-kind restrictions
  • bot — 6 ops, no bot-kind restrictions

1. File operations

bash
octo-cli file upload      --file ./report.pdf [--type chat] [--path subdir/]
octo-cli file download    <path> --format json > saved.bin      # <path> = storage key (no bucket prefix), see note below
octo-cli file credentials --filename report.pdf
octo-cli file presigned   --filename report.pdf --fileSize 1048576   # --fileSize (bytes) is REQUIRED
upload — multipart form

Unlike every other command, file upload sends a multipart multipart/form-data body, not JSON. The --file flag is required and names a local path; --type (default chat) and --path become form text fields. Promoted body flags declared in the spec go in as text fields alongside the binary.

The response envelope carries the returned file descriptor under data — use it to build attachment references in message send.

download — returns a presigned URL

file download <path> issues a GET. The backend responds with a 302 redirect to the storage tier. The CLI does not stream raw bytes — instead it returns a JSON envelope containing the presigned URL:

bash
octo-cli file download /chat/2026/05/abc123.png
# → {"ok":true,"data":{"url":"https://s3.../abc123.png?...","status":302,"content_type":"image/png"}}

To actually fetch the file, use the URL from the response:

bash
octo-cli file download /chat/2026/05/abc123.png --jq '.data.url' | xargs curl -o out.png
Direct-to-S3 uploads

For files too large for multipart, ask the backend for a presigned target and upload directly:

bash
size=$(stat -f%z big.zip 2>/dev/null || stat -c%s big.zip)    # fileSize in bytes (REQUIRED; no padding)
cred=$(octo-cli file presigned --filename big.zip --fileSize "$size")
url=$(jq   -r '.data.uploadUrl'                   <<<"$cred")
ctype=$(jq -r '.data.contentType'                 <<<"$cred")
cdisp=$(jq -r '.data.contentDisposition // empty' <<<"$cred")
curl -X PUT -T big.zip -H "Content-Type: $ctype" ${cdisp:+-H "Content-Disposition: $cdisp"} "$url"

file presigned requires --fileSize (bytes) — the size is signed into the PUT Content-Length, so a missing/oversized value is rejected (HTTP 400 — fileSize is required). It returns {method, uploadUrl, downloadUrl, contentType, key, expiresIn, expiredTime, maxFileSize, [contentDisposition]} — a one-shot signed URL (echo contentDisposition verbatim on the PUT if present). file credentials returns STS-style temporary credentials ({bucket, region, key, credentials:{tmpSecretId, tmpSecretKey, sessionToken}, startTime, expiredTime, cdnBaseUrl}) for SDK-driven uploads. Pick the shape the backend gives you.

2. Bot housekeeping

bash
octo-cli bot register       [--data '{"agent_platform":"…","agent_version":"…","plugin_version":"…"}']
octo-cli bot set-commands   --data '{"commands":[{"command":"fix","description":"create a matter"}]}'
octo-cli bot user-info      --uid <uid>         # --uid is REQUIRED; returns {uid,name,avatar} for that user
octo-cli bot space-members  [--keyword <q>]     # members of the bot's space (limit cap 200)
octo-cli bot typing         --channel-id <cid> --channel-type 1 [--on-behalf-of <uid>]
octo-cli bot heartbeat
bot register — special auth

register is the only operation not behind the authBot middleware. The backend routes it by token prefix: app_* → registerAppBot, bf_* → registerUserBot. You still supply OCTO_BOT_TOKEN; the CLI treats the call like any other.

Use bot register exactly once per bot lifecycle (publish), then use bot set-commands to advertise slash-command metadata.

Show full SKILL.md (182 more words)Show less
Get the owner_uid from bot register

bot user-info needs --uid and returns only {uid, name, avatar} — it does not carry owner_uid. The bot's owner_uid comes from the one-time bot register at publish; capture it then and cache it (env/config) rather than re-registering:

bash
owner=$(octo-cli bot register --jq '.data.owner_uid')   # capture once at publish, then cache

This is the value LLM-backed operations require as creator_uid (e.g. the withheld matter extract, once the matter domain is re-enabled).

typing and heartbeat

Both are fire-and-forget. typing signals an "…is typing" UI state in DM channels. heartbeat refreshes bot liveness — call it on a long-running poll loop so the platform knows the bot is alive.

3. Common pattern: message attachment end-to-end

bash
# 1. Upload the binary.
up=$(octo-cli file upload --file ./log.txt --type chat)
url=$(jq -r '.data.url'  <<<"$up")
name=$(jq -r '.data.name' <<<"$up")

# 2. Attach it to a message.
octo-cli message send --data "$(jq -n \
  --arg c "chat-1" --arg u "$url" --arg n "$name" \
  '{chat_id:$c, text:"see log", attachments:[{url:$u, name:$n, type:"text/plain"}]}')"

4. Error recovery

SymptomFix
upload → PAYLOAD_TOO_LARGEUse file presigned / file credentials and upload direct to S3.
upload → validation "--file is required"Path is empty or unreadable; check permissions and absolute path.
download returns JSON instead of bytesExpected; extract .data.url and fetch with curl/wget.
bot typing returns 200 but no UI updateChannel type must be 1 and the DM must exist.
bot register rejected with UNAUTHORIZEDToken prefix/env mismatch — confirm with octo-cli config show.

5. Schema lookup

bash
octo-cli schema file.upload
octo-cli schema file.download
octo-cli schema bot.register
octo-cli schema bot.user-info

© Mininglamp-OSS, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/octo-files of Mininglamp-OSS/octo-cli.

Open the folder on GitHubat commit 6d21f11

Compare with similar skills

Octo Files next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Octo Files compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Octo Files this skillMininglamp-OSS/octo-cli918—~1.6kAutomated safety check: PassApache-2.0
Stripe Projectsfossasia/eventyay1.7k5 repos~2kAutomated safety check: NotesApache-2.0
FoundatioFoundatioFx/Foundatio2.1k—~3.9kAutomated safety check: PassApache-2.0
Spatialduckdb/duckdb-skills6031 repos~1kAutomated safety check: NotesMIT
R Oopab604/claude-code-r-skills2072 repos~1.9kAutomated safety check: PassMIT
Edgestore Setupedgestorejs/edgestore454—~1.8kAutomated safety check: PassMIT

Similar skills

  • Stripe Projects

    fossasia/eventyay

    A skill your agent uses when the user wants to provision infrastructure or third-party services using Stripe Projects.

    1.7k GitHub starsUsed in 5 repos~2k tokens
    Backend & APIsAuto-check: notes
  • Foundatio

    FoundatioFx/Foundatio

    A skill your agent uses when working with Foundatio infrastructure abstractions for .NET -- caching, queuing, messaging, file storage, distributed locking, or background jobs.

    2.1k GitHub stars~3.9k tokensUpdated 2 days ago
    Backend & APIsAuto-check passed
  • Spatial

    duckdb/duckdb-skills

    Official

    Answer questions about spatial data using DuckDB. An agent skill from duckdb/duckdb-skills.

    603 GitHub starsUsed in 1 repo~1k tokens
    Backend & APIsAuto-check: notes
  • R Oop

    ab604/claude-code-r-skills

    R object-oriented programming guide for S7, S3, S4, and vctrs.

    207 GitHub starsUsed in 2 repos~1.9k tokens
    Backend & APIsAuto-check passed
  • Edgestore Setup

    edgestorejs/edgestore

    A skill your agent uses when adding, extending, or troubleshooting EdgeStore file uploads, upload UI, or bucket access policies in a TypeScript/React application.

    454 GitHub stars~1.8k tokensUpdated today
    Backend & APIsAuto-check passed
  • S3 Explore

    duckdb/duckdb-skills

    Official

    Explore and query data on S3, Cloudflare R2, GCS, MinIO, or any S3-compatible storage.

    603 GitHub starsUsed in 1 repo~848 tokens
    Backend & APIsAuto-check: notes

More from Mininglamp-OSS/octo-cli

All 11 skills in this repo
  • Octo Loop

    Mininglamp-OSS/octo-cli

    A skill your agent uses when operating the Octo Loop control plane through the octo-cli loop commands: reading or writing Fleet tasks, comments, metadata, projects, and labels; dispatching work to…

    918 GitHub stars~2.3k tokensUpdated yesterday
    Auto-check passed
  • Octo Summary

    Mininglamp-OSS/octo-cli

    Read, create, find, and cite Octo summaries through octo-cli.

    918 GitHub stars~1k tokensUpdated yesterday
    Auto-check passed
  • Octo Docs

    Mininglamp-OSS/octo-cli

    Docs domain — create and govern documents, read and incrementally edit a doc's live body, read and edit spreadsheets including structural row/column edits, find & replace, cells, layout, shared…

    918 GitHub stars~2.1k tokensUpdated yesterday
    Auto-check passed
  • Octo Drive

    Mininglamp-OSS/octo-cli

    Octo Drive — spaces, folders, file upload/download, online-document mounts, share links, invites, IM-attachment transfer.

    918 GitHub stars~4.4k tokensUpdated yesterday
    Auto-check passed
  • Octo HTML

    Mininglamp-OSS/octo-cli

    HTML docs domain (octo-doc) — create and govern self-contained interactive HTML documents, immutable versions, drafts, sharing, media, comments, and agent element edits.

    918 GitHub stars~4.2k tokensUpdated yesterday
    Auto-check passed
  • Octo Mail

    Mininglamp-OSS/octo-cli

    OCTO Agent Mail operations for reading, searching, policy-aware sending, preparing drafts, and checking delivery status exclusively through octo-cli.

    918 GitHub stars~3.2k tokensUpdated yesterday
    Auto-check passed

Categories

Questions about Octo Files

What does Octo Files do?

File operations (upload/download, presigned S3 credentials) plus bot housekeeping (register, set-commands, user-info, space-members, typing, heartbeat). Octo Files is an agent skill from Mininglamp-OSS/octo-cli. File operations (upload/download, presigned S3 credentials) plus bot housekeeping (register, set-commands, user-info, space-members, typing, heartbeat).

When should I use Octo Files?

Octo Files fits situations like: tasks that involve File uploads and storage.

How do I install Octo Files in Claude Code?

Run `npx skills add Mininglamp-OSS/octo-cli --skill octo-files -a claude-code`. Or copy the skill folder (skills/octo-files in Mininglamp-OSS/octo-cli) into .claude/skills/octo-files in your project. Claude Code loads it when a task matches its description.

How do I install Octo Files in Codex?

Run `npx skills add Mininglamp-OSS/octo-cli --skill octo-files -a codex`. Or copy the skill folder (skills/octo-files in Mininglamp-OSS/octo-cli) into .agents/skills/octo-files in your project. Codex loads it when a task matches its description.

Can I use Octo Files in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Mininglamp-OSS/octo-cli --skill octo-files -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/octo-files, .gemini/skills/octo-files, .github/skills/octo-files and .opencode/skills/octo-files in your project.

What does Octo Files need to run?

Going by SKILL.md and its folder, Octo Files needs the command-line tools its instructions call (jq and curl) and credentials named OCTO_BOT_TOKEN. Our summary lists: A credential in OCTO_BOT_TOKEN.

Does Octo Files access the network?

SKILL.md contains no URLs. Its commands use curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Octo Files safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Octo Files use?

Octo Files is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Octo Files use?

About 1.6k tokens (SKILL.md is roughly 6.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Octo Files?

Skills that share tags, products or a category with Octo Files: Stripe Projects (fossasia/eventyay, 1.7k stars), Foundatio (FoundatioFx/Foundatio, 2.1k stars), Spatial (duckdb/duckdb-skills, 603 stars) and R Oop (ab604/claude-code-r-skills, 207 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Octo Files?

Mininglamp-OSS (a GitHub organization) maintains it in Mininglamp-OSS/octo-cli, which has 918 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on October 10, 2026.

Source: Mininglamp-OSS/octo-cli on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.