Stripe Projects
fossasia/eventyay
A skill your agent uses when the user wants to provision infrastructure or third-party services using Stripe Projects.
Octo Drive — spaces, folders, file upload/download, online-document mounts, share links, invites, IM-attachment transfer.
$ npx skills add Mininglamp-OSS/octo-cli --skill octo-drive -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Mininglamp-OSS/octo-cli octo-drive --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "octo-drive" agent skill from https://github.com/Mininglamp-OSS/octo-cli/tree/main/skills/octo-drive into .claude/skills/octo-drive/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "octo-drive", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Mininglamp-OSS/octo-cli/tree/main/skills/octo-driveType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Mininglamp-OSS/octo-cli --skill octo-drive -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Mininglamp-OSS/octo-cli octo-drive --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Mininglamp-OSS/octo-cli.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/octo-drive .agents/skills/octo-drive && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "octo-drive" agent skill from https://github.com/Mininglamp-OSS/octo-cli/tree/main/skills/octo-drive into .agents/skills/octo-drive/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "octo-drive", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Mininglamp-OSS/octo-cli --skill octo-drive -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Mininglamp-OSS/octo-cli octo-drive --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Mininglamp-OSS/octo-cli.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/octo-drive .cursor/skills/octo-drive && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "octo-drive" agent skill from https://github.com/Mininglamp-OSS/octo-cli/tree/main/skills/octo-drive into .cursor/skills/octo-drive/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "octo-drive", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Mininglamp-OSS/octo-cli.git --path skills/octo-drive--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Mininglamp-OSS/octo-cli --skill octo-drive -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Mininglamp-OSS/octo-cli octo-drive --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Mininglamp-OSS/octo-cli.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/octo-drive .gemini/skills/octo-drive && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "octo-drive" agent skill from https://github.com/Mininglamp-OSS/octo-cli/tree/main/skills/octo-drive into .gemini/skills/octo-drive/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "octo-drive", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Mininglamp-OSS/octo-cli octo-driveInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Mininglamp-OSS/octo-cli --skill octo-drive -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Mininglamp-OSS/octo-cli.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/octo-drive .github/skills/octo-drive && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "octo-drive" agent skill from https://github.com/Mininglamp-OSS/octo-cli/tree/main/skills/octo-drive into .github/skills/octo-drive/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "octo-drive", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Mininglamp-OSS/octo-cli --skill octo-drive -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Mininglamp-OSS/octo-cli octo-drive --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Mininglamp-OSS/octo-cli.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/octo-drive .opencode/skills/octo-drive && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "octo-drive" agent skill from https://github.com/Mininglamp-OSS/octo-cli/tree/main/skills/octo-drive into .opencode/skills/octo-drive/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "octo-drive", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
octo-driveOcto 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. 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.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 6d21f11. It shows what the files ask for, not the result of running them.
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.
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.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
OCTO_TOKENOCTO_BOT_TOKENUK_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
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.
.claude/skills/octo-drive/SKILL.md (or your agent's skills folder).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.
Drive uses the same credential as every other domain. Set one of:
export OCTO_TOKEN=<uk_… | bf_… | app_…> # preferred slot, any token kind
export OCTO_BOT_TOKEN=<bf_… | app_…> # long-standing variable, still fineOCTO_TOKEN wins when both are set, so you can run one command as a real person without disturbing a bot setup:
OCTO_TOKEN=$UK_KEY octo-cli drive space listA 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:
| token | acts as | mount |
|---|---|---|
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.
| id | shape | produced by | consumed by |
|---|---|---|---|
| drive space id | opaque 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 id | decimal string | browse, folder create, upload file, doc mount, im-transfer create → .data.id | <file-id>, --parent-id ("0" = space root) |
doc_id / doc_space_id | opaque strings | doc candidates, doc list, file get | document links only |
share_id vs share_token | opaque strings | share create, share blob-create, share list | share_id → share revoke; the token is embedded in share_url |
invite_id vs invite_token | opaque strings | invite create, invite list | invite_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.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.pdfSPACE=$(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.
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:
octo-cli drive member add "$SPACE" --uid "$UID" --role editormember 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.
| role | member add / set-role | invite 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.
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.
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).
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).
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:
{"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.
There is exactly one thing the two sides exchange: data.share_url.
octo-cli drive share create "$FILE" --permission download --expires-in-seconds 86400 --password-file ./pw--verbose / --dry-run output.--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.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.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.- (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.| code | type / exit | what to do |
|---|---|---|
TOKEN_KIND_NOT_ALLOWED | validation / 2 | switch credentials; do not retry |
ENUM_NOT_ALLOWED | validation / 2 | the value is outside the spec's enum; the hint lists the accepted set |
unauthorized | auth / 3 | token invalid, revoked, or the user/bot is inactive |
permission_denied | permission / 1 | the identity lacks the space role; drive member add it |
password_required / wrong_password | permission / 1 | pass or fix the password (--password-file) |
share_expired | permission / 1 | ask for a new link |
not_found | api_error / 1 | check the id and that the space is reachable |
conflict | validation / 2 | re-read state, then retry |
invalid_argument | validation / 2 | check the schema: octo-cli schema drive.<op> |
FILE_EXISTS | validation / 2 | pass --overwrite or pick another path |
NOT_DOWNLOADABLE | validation / 2 | a document link; use share access or a browser |
INVALID_SHARE_URL | validation / 2 | pass the share_url exactly as produced |
MISSING_DOC_SPACE_ID | validation / 2 | re-mount the document; never substitute the drive space id |
UNSAFE_PRESIGNED_URL | api_error / 1 | the backend returned an unusable URL, or one whose host resolves to this machine; report it |
TRANSFER_REDIRECTED_LOCALLY | validation / 2 | the transfer was rerouted to this machine but the URL does not name it; check http_proxy / https_proxy / all_proxy / no_proxy |
INVALID_PROXY | validation / 2 | the proxy value in this environment is not a usable URL. The value is never echoed, because a proxy URL often carries credentials |
PARTIAL_FILE_REPLACED | validation / 2 | something replaced the part file or the destination mid-download; nothing was published, re-run in a directory only you can write |
UPLOAD_FAILED | api_error / 1 | the presigned PUT was rejected or the confirm failed; the detail carries file_id and whether the pending row was cancelled |
INVALID_FLAG | validation / 2 | a positional id starting with - was parsed as a flag; pass it as the named flag or after -- |
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:
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.
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 createPer-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
Just SKILL.md in skills/octo-drive of Mininglamp-OSS/octo-cli.
Open the folder on GitHubat commit 6d21f11
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Octo Drive this skillMininglamp-OSS/octo-cli | 918 | — | ~4.4k | Automated safety check: Pass | Apache-2.0 | |
| Stripe Projectsfossasia/eventyay | 1.7k | 5 repos | ~2k | Automated safety check: Notes | Apache-2.0 | |
| FoundatioFoundatioFx/Foundatio | 2.1k | — | ~3.9k | Automated safety check: Pass | Apache-2.0 | |
| Spatialduckdb/duckdb-skills | 603 | 1 repos | ~1k | Automated safety check: Notes | MIT | |
| R Oopab604/claude-code-r-skills | 207 | 2 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Edgestore Setupedgestorejs/edgestore | 454 | — | ~1.8k | Automated safety check: Pass | MIT |
fossasia/eventyay
A skill your agent uses when the user wants to provision infrastructure or third-party services using Stripe Projects.
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.
duckdb/duckdb-skills
Answer questions about spatial data using DuckDB. An agent skill from duckdb/duckdb-skills.
ab604/claude-code-r-skills
R object-oriented programming guide for S7, S3, S4, and vctrs.
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.
duckdb/duckdb-skills
Explore and query data on S3, Cloudflare R2, GCS, MinIO, or any S3-compatible storage.
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…
Mininglamp-OSS/octo-cli
Read, create, find, and cite Octo summaries through octo-cli.
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…
Mininglamp-OSS/octo-cli
File operations (upload/download, presigned S3 credentials) plus bot housekeeping (register, set-commands, user-info, space-members, typing, heartbeat).
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.
Mininglamp-OSS/octo-cli
OCTO Agent Mail operations for reading, searching, policy-aware sending, preparing drafts, and checking delivery status exclusively through octo-cli.
Categories
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.
Octo Drive fits situations like: tasks that involve File uploads and storage.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.