Agent skill

Octo Drive

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

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

Apache-2.0Auto-check passedBackend & APIs

Install Octo Drive

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

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

GitHub CLI
$ gh skill install Mininglamp-OSS/octo-cli octo-drive --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-drive .claude/skills/octo-drive && 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-drive
GitHub stars
918
Token cost
~4.4k tokens
SKILL.md length
1,935 words
Files
1
Skills in repo
11
Repo updated
First seen
Licence
Apache-2.0

At a glance

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

  • Works in 8 steps: Credentials — nothing drive-specific → Ids — copy them, never compute with them → The five workflows → …
  • Tasks that involve File uploads and storage
  • SKILL.md covers 1. Credentials — nothing…, 2. Ids — copy them, never…, 3. The five workflows and 4. Upload and download in detail, plus 4 more sections
  • Needs OCTO_TOKEN and OCTO_BOT_TOKEN

What it does

Octo Drive is an agent skill from Mininglamp-OSS/octo-cli. Octo Drive — spaces, folders, file upload/download, online-document mounts, share links, invites, IM-attachment transfer. Works with a bot token or a user API key; the CLI routes by token kind. Load after octo-shared.

Its SKILL.md is about 4.4k 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-drive”

Requirements

  • A credential in OCTO_TOKEN
  • A credential in OCTO_BOT_TOKEN

Workflow steps

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

  1. Credentials — nothing drive-specific
  2. Ids — copy them, never compute with them
  3. The five workflows
  4. Upload and download in detail
  5. Share links
  6. Errors
  7. Destructive commands
  8. Full command list

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

    No scripts in the folder and no shell commands in SKILL.md (its code samples are bash and json).

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

  • Network

    No URLs in SKILL.md.

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

  • Credentials

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

    • OCTO_TOKEN
    • OCTO_BOT_TOKEN
    • UK_KEY

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

Context cost

Octo Drive loads about 4.4k tokens when it runs. Until then it costs about 57 tokens; SKILL.md has 1,935 words of instructions outside code blocks.

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

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). 1,935 words, ~4,428 tokens.

Download SKILL.mdSave it as .claude/skills/octo-drive/SKILL.md (or your agent's skills folder).
name
octo-drive
description
Octo Drive — spaces, folders, file upload/download, online-document mounts, share links, invites, IM-attachment transfer. Works with a bot token or a user API key; the CLI routes by token kind. Load after octo-shared.
version
0.1.0

octo-drive — network drive operations

45 commands over one backend. Everything is scoped to a drive space: either your personal space or a shared one you are a member of.

1. Credentials — nothing drive-specific

Drive uses the same credential as every other domain. Set one of:

bash
export OCTO_TOKEN=<uk_… | bf_… | app_…>      # preferred slot, any token kind
export OCTO_BOT_TOKEN=<bf_… | app_…>         # long-standing variable, still fine

OCTO_TOKEN wins when both are set, so you can run one command as a real person without disturbing a bot setup:

bash
OCTO_TOKEN=$UK_KEY octo-cli drive space list

A stored profile (octo-cli auth login) takes precedence over both. Do not create a drive-only profile — there is no such concept.

The token kind decides which identity the backend sees, and the CLI routes the request accordingly:

tokenacts asmount
uk_…the real person who owns the key/v1/user/drive/*
bf_…the User Bot/v1/bot/drive/*
app_…the App Bot/v1/bot/drive/*

Any other credential fails locally with TOKEN_KIND_NOT_ALLOWED (exit 2) — switch credentials, don't retry.

A bot has no implicit access: to touch a shared space it must be added as a member, exactly like a person. If a bot gets permission_denied, add it with drive member add. An app_… token may also lack a resolvable space entirely; that surfaces as a 401 (exit 3) from the server, and the fix is a bf_… or uk_… credential.

Drive never sends X-Space-Id — the tenant comes from the verified identity.

2. Ids — copy them, never compute with them

idshapeproduced byconsumed by
drive space idopaque string, e.g. personal:<octo-space>:<uid> or shared:<uuid>space create/list/get/ensure-personal → .data.id--space-id, --target-space-id, positional <space-id>
drive file iddecimal stringbrowse, folder create, upload file, doc mount, im-transfer create → .data.id<file-id>, --parent-id ("0" = space root)
doc_id / doc_space_idopaque stringsdoc candidates, doc list, file getdocument links only
share_id vs share_tokenopaque stringsshare create, share blob-create, share listshare_id → share revoke; the token is embedded in share_url
invite_id vs invite_tokenopaque stringsinvite create, invite listinvite_id → invite revoke; invite_token → invite accept

File ids are uint64 and are emitted as JSON strings on purpose. Values above 2^53 would be silently rounded by a JavaScript-style parser, addressing a different file. So: pass them through verbatim (-q '.data.id' | tr -d '"'), never do arithmetic on them, never reformat them. The CLI rejects a non-decimal or out-of-range id locally.

Why | tr -d '"' on every capture below. --jq/-q prints a JSON value, and ids are JSON strings — so -q '.data.id' emits "123" including the quotes, and a quoted id is rejected by the next command's id validation. There is no raw-output flag; -q is the only output filter the CLI defines. Strip the quotes in the shell. (Numbers already come out bare, so this matters for string-valued fields: every id, share_url, and every opaque token.)

Two traps worth naming:

  • space_id (the drive space) and doc_space_id (the document's own Octo Space) are different scopes. Building a document link from space_id produces a link to the wrong place. The CLI fails closed rather than substituting.
  • doc unmount takes the mount node id (.data.id), not the doc_id.

3. The five workflows

Space → folder → upload → share → download
bash
SPACE=$(octo-cli drive space create --name "Project files" -q '.data.id' | tr -d '"')
FOLDER=$(octo-cli drive folder create --space-id "$SPACE" --parent-id 0 --name Contracts -q '.data.id' | tr -d '"')
FILE=$(octo-cli drive upload file ./contract.pdf --space-id "$SPACE" --parent-id "$FOLDER" -q '.data.id' | tr -d '"')

SHARE_URL=$(octo-cli drive share create "$FILE" -q '.data.share_url' | tr -d '"')
# Hand SHARE_URL to the receiver verbatim. They never extract a token:
octo-cli drive share access   "$SHARE_URL"
octo-cli drive share download "$SHARE_URL" -o ./contract.pdf

# A space member can also download by internal id:
octo-cli drive download file "$FILE" -o ./copy.pdf
bash
SPACE=$(octo-cli drive space ensure-personal -q '.data.id' | tr -d '"')
DOC=$(octo-cli drive doc candidates --space-id "$SPACE" -q '.data.items[0].doc_id' | tr -d '"')
MOUNT=$(octo-cli drive doc mount --space-id "$SPACE" --doc-id "$DOC" -q '.data.id' | tr -d '"')
DOC_URL=$(octo-cli drive share create "$MOUNT" -q '.data.share_url' | tr -d '"')

octo-cli drive share access "$DOC_URL"      # resolves the target; grants nothing
# `share download` on a document link fails with NOT_DOWNLOADABLE — by design.

doc mount takes no --doc-title: the title and the document's real Octo Space are read server-side from the document metadata, so they cannot drift.

Invite a member
bash
SPACE=$(octo-cli drive space create --name "Collab" -q '.data.id' | tr -d '"')
INVITE_ID=$(octo-cli drive invite create "$SPACE" --role editor -q '.data.invite_id' | tr -d '"')
TOKEN=$(octo-cli drive invite list "$SPACE" -q '.data.invites[0].invite_token' | tr -d '"')

octo-cli drive invite accept "$TOKEN"          # as the invitee's credential
octo-cli drive invite revoke "$SPACE" "$INVITE_ID"

invite_id / invite_token are base64url and may start with -; prefer --invite-id / --invite-token in scripts so a leading dash is never parsed as a flag.

Roles accepted by invite create: preview_only, downloader, uploader_downloader, editor, admin (admin only if you are the space's super_admin). custom and super_admin are rejected on invites. Or add a known uid directly:

bash
octo-cli drive member add "$SPACE" --uid "$UID" --role editor

member add / member set-role accept one more role than invites do — custom, the lowest rank (below preview_only). super_admin is never grantable: it is bound to the space creator at space creation.

rolemember add / set-roleinvite create
preview_only / downloader / uploader_downloader / editor✅✅
admin✅ super_admin only✅ super_admin only
custom✅❌
super_admin❌❌

Drive has no user search — get a uid from the message/group commands or your own context.

IM attachment → drive
bash
MSG=$(octo-cli message search files --chat-id "$GROUP" -q '.data.items[0].message_id' | tr -d '"')
FILE=$(octo-cli drive im-transfer create \
  --im-group-no "$GROUP" --im-channel-type 2 --im-msg-id "$MSG" \
  --target-space-id "$SPACE" -q '.data.id' | tr -d '"')

--im-channel-type is required: 1=DM, 2=group, 5=thread, and it must be the kind the message actually came from. It picks the upstream message-read route (1 uses the DM route; 2 and 5 share the group route, where group vs sub-thread comes from the composite group_no), and it is stored as the first segment of the row's source_key (channelType#channelID#msgID), which the chat file-card's already-transferred lookup matches on — a wrong value makes that lookup miss. Anything outside 1|2|5 is rejected locally (ENUM_NOT_ALLOWED, exit 2).

Transfer idempotency is keyed on (target space, type=blob, object path), not on the channel type: a replay of the same message returns the existing row with idempotent: true, and a wrong channel type cannot produce a duplicate file. Keep the message id a string.

Browse and act
bash
octo-cli drive browse --space-id "$SPACE" --parent-id 0
octo-cli drive browse --space-id "$SPACE" --type blob --source user-upload

FILE=$(octo-cli drive browse --space-id "$SPACE" -q '.data.entries[0].id' | tr -d '"')
octo-cli drive file get    "$FILE"                       # type → blob | doc | folder
octo-cli drive file move   "$FILE" --parent-id "$FOLDER"
octo-cli drive file rename "$FILE" --name new-name.pdf
octo-cli drive file copy   "$FILE" --parent-id "$FOLDER"

file get is how you branch: type tells you whether an id is a blob, a mounted document, or a folder.

browse returns the complete listing; its page object is an envelope, not a database page, so --page-index / --page-size do not actually narrow the result yet.

drive search is full-text search across every space the caller can see (name + blob/doc body via OpenSearch), scoped by the caller's own membership — a bot only sees spaces it was added to. --page-index here IS a real page (0-based).

bash
octo-cli drive search --q "报销单"                              # all visible spaces
octo-cli drive search --q "预算" --scope space --space-id "$SPACE"
octo-cli drive search --q "合同" --data '{"filters":{"type":"blob","owner_scope":"me"}}'

Advanced --filters (pass via --data): type (folder|doc|blob), owner_scope (me|others), updated_after (RFC3339), size_min/size_max (bytes). Each hit carries file_id, path (breadcrumb), type, highlights.{name,body} with <mark> fragments, and owner_uid/updater_uid (resolve display names via the message/group commands — search returns uids, not names). Requires the server's search backend to be configured; otherwise the call returns unavailable (503).

4. Upload and download in detail

drive upload file runs prepare → PUT to object storage → confirm. The PUT goes out on a separate HTTP client that carries no Octo credential — the presigned URL is its own authorisation. If anything fails after the pending row exists, the CLI cancels it and the error reports the file_id plus the cancel outcome:

json
{"ok":false,"error":{"code":"UPLOAD_FAILED","detail":{"file_id":"42","pending_file":"cancelled"}}}

If pending_file is not cancelled, run octo-cli drive upload cancel <file-id> yourself.

drive download file and drive share download write to a randomly-named partial file next to the destination, fsync, then rename — an interrupted transfer never leaves a truncated file, and a pre-created symlink at a guessable path cannot redirect the write. An existing destination is refused unless you pass --overwrite. The result carries a sha256 you can verify.

The low-level steps stay available (upload prepare|confirm|cancel, download url) if you need to drive the transfer yourself.

drive blob create is a different thing and is rarely what you want: it registers an object already in storage rather than uploading one. The backend verifies it — an --object-path storage does not hold is invalid_argument, and a --size that conflicts with the stored object is rejected (--size 0 for a non-empty object included) — so it can no longer produce a row that lists fine and 404s on download. If storage is unreachable the probe is inconclusive and you get a 500 to retry, not invalid_argument. It still persists no download URL, so share download on such a row answers not_found. Use drive upload file unless the bytes are already in the bucket.

Show full SKILL.md (758 more words)Show less

There is exactly one thing the two sides exchange: data.share_url.

bash
octo-cli drive share create "$FILE" --permission download --expires-in-seconds 86400 --password-file ./pw
  • The password is passed out of band — it is never in the URL, and it is masked in --verbose / --dry-run output.
  • Prefer --password-file <path> (or --password-file - for stdin) over --password. A value on argv is readable from ps and /proc and lands in shell history for the process lifetime, the same reason auth login takes its token from --token-file / stdin and never from the command line. --password still works for interactive use. One trailing newline is stripped from the file; nothing else is, so a password may begin or end with a space.
  • --permission is held to the spec's view | download enum locally: anything else is ENUM_NOT_ALLOWED / exit 2 with no request sent.
  • Both sides need a credential. There is no anonymous share. The token (and password) authorise the share; your credential authenticates you. The receiver does not have to be a member of the file's space.
  • share access / share download accept only links on your configured Octo origin — same scheme, host and port — in exactly the /drive/s/<token> or /d/<docId>?sp=<docSpaceId> shape. Anything else fails with INVALID_SHARE_URL — the CLI parses the link, it never fetches the host in it. Pass the link exactly as share create produced it; a scheme-downgraded copy of an otherwise correct link is refused.
  • downloadable tells you which command to use next. Documents are always false, and so is a blob shared with --permission view — share download on either answers permission_denied. Only --permission download yields bytes.
  • Revoke with the share_id, not the token: octo-cli drive share revoke "$SHARE_ID". The share_id is itself treated as a secret — the backend returns one opaque id that is both the management handle and the access token — so --verbose, --dry-run and error output show it as ***REDACTED***. That is the mask, not a wrong id: the real value still goes on the wire. Read it from share create / share list output, which is not masked.
  • base64url ids can start with - (about one in 64), which cobra reads as a flag. Pass those as a flag instead — octo-cli drive share revoke --share-id "$SHARE_ID" — or put the value after a -- separator. The same applies to --invite-id (invite revoke) and --invite-token (invite accept). Using the flag form unconditionally is the safe habit for a script.

6. Errors

codetype / exitwhat to do
TOKEN_KIND_NOT_ALLOWEDvalidation / 2switch credentials; do not retry
ENUM_NOT_ALLOWEDvalidation / 2the value is outside the spec's enum; the hint lists the accepted set
unauthorizedauth / 3token invalid, revoked, or the user/bot is inactive
permission_deniedpermission / 1the identity lacks the space role; drive member add it
password_required / wrong_passwordpermission / 1pass or fix the password (--password-file)
share_expiredpermission / 1ask for a new link
not_foundapi_error / 1check the id and that the space is reachable
conflictvalidation / 2re-read state, then retry
invalid_argumentvalidation / 2check the schema: octo-cli schema drive.<op>
FILE_EXISTSvalidation / 2pass --overwrite or pick another path
NOT_DOWNLOADABLEvalidation / 2a document link; use share access or a browser
INVALID_SHARE_URLvalidation / 2pass the share_url exactly as produced
MISSING_DOC_SPACE_IDvalidation / 2re-mount the document; never substitute the drive space id
UNSAFE_PRESIGNED_URLapi_error / 1the backend returned an unusable URL, or one whose host resolves to this machine; report it
TRANSFER_REDIRECTED_LOCALLYvalidation / 2the transfer was rerouted to this machine but the URL does not name it; check http_proxy / https_proxy / all_proxy / no_proxy
INVALID_PROXYvalidation / 2the proxy value in this environment is not a usable URL. The value is never echoed, because a proxy URL often carries credentials
PARTIAL_FILE_REPLACEDvalidation / 2something replaced the part file or the destination mid-download; nothing was published, re-run in a directory only you can write
UPLOAD_FAILEDapi_error / 1the presigned PUT was rejected or the confirm failed; the detail carries file_id and whether the pending row was cancelled
INVALID_FLAGvalidation / 2a positional id starting with - was parsed as a flag; pass it as the named flag or after --

7. Destructive commands

space delete, member remove, folder delete, blob delete, doc unmount, share revoke, invite revoke are all high-risk writes with no confirmation prompt (agent runtimes cannot prompt). Deletes are soft on the backend, but folder delete takes the whole subtree with it.

Preview any write first:

bash
octo-cli drive folder delete "$FOLDER" --dry-run

--dry-run on upload file, download file, share create and share download describes the plan and stops: no pending row is created, no URL is fetched, nothing is written to disk.

8. Full command list

drive browse
drive search
drive space       create | list | ensure-personal | get | rename | delete
drive member      list | add | set-role | remove
drive folder      create | list | rename | move | delete
drive file        get | move | copy | rename
drive blob        create | get | list | delete
drive upload      file | prepare | confirm | cancel
drive download    file | url
drive doc         mount | unmount | list | candidates
drive share       create | blob-create | list | revoke | access | download
drive invite      create | list | revoke | accept
drive im-transfer create

Per-command flags: octo-cli drive <group> <verb> --help, or octo-cli schema drive.<group>.<verb> for the wire contract.

© 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-drive of Mininglamp-OSS/octo-cli.

Open the folder on GitHubat commit 6d21f11

Compare with similar skills

Octo Drive 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 Drive compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Octo Drive this skillMininglamp-OSS/octo-cli918—~4.4kAutomated 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 Files

    Mininglamp-OSS/octo-cli

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

    918 GitHub stars~1.6k 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 Drive

What does Octo Drive do?

Octo Drive — spaces, folders, file upload/download, online-document mounts, share links, invites, IM-attachment transfer. Octo Drive is an agent skill from Mininglamp-OSS/octo-cli. Octo Drive — spaces, folders, file upload/download, online-document mounts, share links, invites, IM-attachment transfer.

When should I use Octo Drive?

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

How do I install Octo Drive in Claude Code?

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

How do I install Octo Drive in Codex?

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

Can I use Octo Drive 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-drive -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-drive, .gemini/skills/octo-drive, .github/skills/octo-drive and .opencode/skills/octo-drive in your project.

What does Octo Drive need to run?

Going by SKILL.md and its folder, Octo Drive needs credentials named OCTO_TOKEN, OCTO_BOT_TOKEN and UK_KEY. Our summary lists: A credential in OCTO_TOKEN; A credential in OCTO_BOT_TOKEN.

Does Octo Drive access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Octo Drive 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 Drive use?

Octo Drive 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 Drive use?

About 4.4k tokens (SKILL.md is roughly 18k 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 Drive?

Skills that share tags, products or a category with Octo Drive: 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 Drive?

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.