Phidown
ESA-PhiLab/phidown
Search, filter, download, and analyze Copernicus Data Space products with the phidown project.
Agent skill
by jeremylongshore in jeremylongshore/tons-of-skills-marketplace
Manage OCI Object Storage — buckets, uploads, PARs, and lifecycle policies.
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill oraclecloud-data-handling -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace oraclecloud-data-handling --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/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/.curated/oraclecloud-data-handling .claude/skills/oraclecloud-data-handling && 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 "oraclecloud-data-handling" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/oraclecloud-data-handling into .claude/skills/oraclecloud-data-handling/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "oraclecloud-data-handling", 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/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/oraclecloud-data-handlingType 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 jeremylongshore/tons-of-skills-marketplace --skill oraclecloud-data-handling -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace oraclecloud-data-handling --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/.curated/oraclecloud-data-handling .agents/skills/oraclecloud-data-handling && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "oraclecloud-data-handling" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/oraclecloud-data-handling into .agents/skills/oraclecloud-data-handling/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "oraclecloud-data-handling", 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 jeremylongshore/tons-of-skills-marketplace --skill oraclecloud-data-handling -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace oraclecloud-data-handling --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/.curated/oraclecloud-data-handling .cursor/skills/oraclecloud-data-handling && 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 "oraclecloud-data-handling" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/oraclecloud-data-handling into .cursor/skills/oraclecloud-data-handling/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "oraclecloud-data-handling", 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/jeremylongshore/tons-of-skills-marketplace.git --path skills/.curated/oraclecloud-data-handling--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 jeremylongshore/tons-of-skills-marketplace --skill oraclecloud-data-handling -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace oraclecloud-data-handling --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/.curated/oraclecloud-data-handling .gemini/skills/oraclecloud-data-handling && 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 "oraclecloud-data-handling" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/oraclecloud-data-handling into .gemini/skills/oraclecloud-data-handling/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "oraclecloud-data-handling", 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 jeremylongshore/tons-of-skills-marketplace oraclecloud-data-handlingInstalls 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 jeremylongshore/tons-of-skills-marketplace --skill oraclecloud-data-handling -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/.curated/oraclecloud-data-handling .github/skills/oraclecloud-data-handling && 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 "oraclecloud-data-handling" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/oraclecloud-data-handling into .github/skills/oraclecloud-data-handling/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "oraclecloud-data-handling", 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 jeremylongshore/tons-of-skills-marketplace --skill oraclecloud-data-handling -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace oraclecloud-data-handling --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/.curated/oraclecloud-data-handling .opencode/skills/oraclecloud-data-handling && 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 "oraclecloud-data-handling" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/oraclecloud-data-handling into .opencode/skills/oraclecloud-data-handling/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "oraclecloud-data-handling", 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.
oraclecloud-data-handlingManage OCI Object Storage — buckets, uploads, PARs, and lifecycle policies.
Oraclecloud Data Handling is an agent skill from jeremylongshore/tons-of-skills-marketplace. Manage OCI Object Storage — buckets, uploads, PARs, and lifecycle policies. Use when uploading objects, creating pre-authenticated requests, or configuring lifecycle rules. Trigger with "oci object storage", "oci bucket", "par url", "multipart upload", "oci lifecycle".
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/one-pager.md`). Compatibility notes: Designed for Claude Code
It sits in Backend & APIs, covering File uploads and storage. It works with Python. The repository describes itself as: Model-agnostic agent-skills platform with a harness-free canonical layer, verified adapters, and the ccpi package manager. Explore at tonsofskills.com. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit cfae287. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteEditBash(pip:*)GrepFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pipFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
docs.oracle.comoracle.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Designed for Claude Code
From compatibility in the SKILL.md frontmatter.
Oraclecloud Data Handling loads about 2.3k tokens when it runs, and up to ~2.6k if it reads all its reference files. Until then it costs about 74 tokens; SKILL.md has 452 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 jeremylongshore/tons-of-skills-marketplace at commit cfae287, republished under its MIT licence (© jeremylongshore). 452 words, ~2,276 tokens.
.claude/skills/oraclecloud-data-handling/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Manage OCI Object Storage using the Python SDK. Object Storage is OCI's S3 equivalent, but PAR (Pre-Authenticated Request) URLs expire silently with no error — the URL just returns 404. Multipart uploads over 50GB require manual part management. Lifecycle policies can delete data unexpectedly if misconfigured. This skill covers the safe patterns for all of these operations.
Purpose: Upload, download, and share objects safely with proper PAR expiry management and lifecycle policy configuration.
pip install oci~/.oci/config with fields: user, fingerprint, tenancy, region, key_fileAllow group Developers to manage objects in compartment <name>Every OCI tenancy has a unique Object Storage namespace. You must discover it before any operation.
import oci
from datetime import datetime, timedelta
config = oci.config.from_file("~/.oci/config")
storage = oci.object_storage.ObjectStorageClient(config)
# Namespace is tenancy-specific — discover it, never hardcode
namespace = storage.get_namespace().data
print(f"Namespace: {namespace}")
# Create bucket
bucket = storage.create_bucket(
namespace_name=namespace,
create_bucket_details=oci.object_storage.models.CreateBucketDetails(
compartment_id=config["tenancy"],
name="app-data-bucket",
storage_tier="Standard",
public_access_type="NoPublicAccess",
versioning="Enabled", # Protect against accidental deletes
),
).data
print(f"Bucket created: {bucket.name}")Use simple upload for files under 50MB. For larger files, use the UploadManager which handles multipart automatically.
# Simple upload (< 50MB)
with open("report.csv", "rb") as f:
storage.put_object(
namespace_name=namespace,
bucket_name="app-data-bucket",
object_name="reports/2026/report.csv",
put_object_body=f,
content_type="text/csv",
)
print("Simple upload complete")
# Multipart upload for large files (UploadManager handles chunking)
from oci.object_storage import UploadManager
upload_manager = UploadManager(storage)
response = upload_manager.upload_file(
namespace_name=namespace,
bucket_name="app-data-bucket",
object_name="backups/large-dump.tar.gz",
file_path="/tmp/large-dump.tar.gz",
part_size=64 * 1024 * 1024, # 64MB parts
allow_multipart_uploads=True,
)
print(f"Multipart upload complete: {response.status}")# List objects with prefix
objects = storage.list_objects(
namespace_name=namespace,
bucket_name="app-data-bucket",
prefix="reports/",
).data
for obj in objects.objects:
print(f"{obj.name} | {obj.size} bytes | {obj.time_modified}")
# Download an object
response = storage.get_object(
namespace_name=namespace,
bucket_name="app-data-bucket",
object_name="reports/2026/report.csv",
)
with open("downloaded-report.csv", "wb") as f:
for chunk in response.data.raw.stream(1024 * 1024):
f.write(chunk)
print("Download complete")PARs are OCI's signed URLs. Critical gotcha: expired PARs return 404 NotFound, not 401 or 403. Callers assume the object was deleted when it is actually just the PAR that expired.
# Create a PAR with explicit expiry
par = storage.create_preauthenticated_request(
namespace_name=namespace,
bucket_name="app-data-bucket",
create_preauthenticated_request_details=oci.object_storage.models.CreatePreauthenticatedRequestDetails(
name="partner-download-2026q1",
access_type="ObjectRead",
object_name="reports/2026/report.csv",
time_expires=datetime.utcnow() + timedelta(hours=24),
),
).data
par_url = f"https://objectstorage.{config['region']}.oraclecloud.com{par.access_uri}"
print(f"PAR URL (expires in 24h): {par_url}")
print(f"PAR ID (save for revocation): {par.id}")
# List active PARs to audit expiry
pars = storage.list_preauthenticated_requests(
namespace_name=namespace,
bucket_name="app-data-bucket",
).data
for p in pars:
remaining = p.time_expires - datetime.utcnow()
print(f"{p.name} | expires: {p.time_expires} | remaining: {remaining}")
# Revoke a PAR before expiry
storage.delete_preauthenticated_request(
namespace_name=namespace,
bucket_name="app-data-bucket",
par_id=par.id,
)
print("PAR revoked")Lifecycle rules can auto-archive or delete objects. Warning: A rule with time_amount=30 and action=DELETE will permanently delete objects after 30 days with no recovery unless versioning is enabled.
storage.put_object_lifecycle_policy(
namespace_name=namespace,
bucket_name="app-data-bucket",
put_object_lifecycle_policy_details=oci.object_storage.models.PutObjectLifecyclePolicyDetails(
items=[
oci.object_storage.models.ObjectLifecycleRule(
name="archive-old-reports",
action="ARCHIVE",
time_amount=90,
time_unit="DAYS",
is_enabled=True,
object_name_filter=oci.object_storage.models.ObjectNameFilter(
inclusion_prefixes=["reports/"],
),
),
oci.object_storage.models.ObjectLifecycleRule(
name="delete-temp-files",
action="DELETE",
time_amount=7,
time_unit="DAYS",
is_enabled=True,
object_name_filter=oci.object_storage.models.ObjectNameFilter(
inclusion_prefixes=["tmp/"],
),
),
]
),
)
print("Lifecycle policies applied")Successful completion produces:
| Error | Code | Cause | Solution |
|---|---|---|---|
| Bucket not found | 404 NotAuthorizedOrNotFound | Wrong namespace, bucket name, or IAM | Verify namespace with get_namespace(), check IAM policy |
| PAR returns 404 | 404 | PAR expired (not the object) | List PARs to check expiry; create a new PAR |
| Object too large | 400 InvalidParameter | Simple upload > 50MB | Use UploadManager with allow_multipart_uploads=True |
| Not authenticated | 401 NotAuthenticated | Bad API key or config | Verify ~/.oci/config key_file and fingerprint |
| Rate limited | 429 TooManyRequests | Too many API calls | Add backoff; OCI does not return Retry-After header |
| SSL error | N/A CERTIFICATE_VERIFY_FAILED | Corporate proxy or cert issue | Set SSL_CERT_FILE env var or configure SDK cert bundle |
Quick bucket list via CLI:
oci os bucket list \
--compartment-id <OCID> \
--query "data[*].{Name:name,Versioning:versioning}" \
--output tableCheck all active PARs across buckets:
buckets = storage.list_buckets(
namespace_name=namespace,
compartment_id=config["tenancy"],
).data
for b in buckets:
pars = storage.list_preauthenticated_requests(
namespace_name=namespace,
bucket_name=b.name,
).data
if pars:
print(f"\n{b.name}:")
for p in pars:
print(f" {p.name} | expires: {p.time_expires}")oci os commandsAfter setting up Object Storage, see oraclecloud-query-transform to monitor storage metrics via MQL, or oraclecloud-schema-migration if you need to export database data into Object Storage buckets.
© jeremylongshore, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (references) in skills/.curated/oraclecloud-data-handling of jeremylongshore/tons-of-skills-marketplace.
Open the folder on GitHubat commit cfae287
We found 2 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in jeremylongshore/tons-of-skills-marketplace, which our catalogue first saw on October 8, 2026.
Oraclecloud Data Handling 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 |
|---|---|---|---|---|---|---|
| Oraclecloud Data Handling this skilljeremylongshore/tons-of-skills-marketplace | 2.8k | 1 repos | ~2.3k | Automated safety check: Pass | MIT | |
| PhidownESA-PhiLab/phidown | 105 | — | ~1k | Automated safety check: Pass | Apache-2.0 | |
| Fullstack DevHHU3637kr/skills | 145 | 3 repos | ~8.6k | Automated safety check: Notes | MIT | |
| Canvas Lms APIaspi6246/Claude-Code-Skills-for-Academics | 159 | — | ~3.7k | Automated safety check: Pass | None | |
| Google Cloud Storage Bucket Architectgoogle/skills | 21k | — | ~2.6k | Automated safety check: Pass | Apache-2.0 | |
| Azure Storage Blob Pymicrosoft/skills | 3.1k | — | ~2.3k | Automated safety check: Pass | MIT |
ESA-PhiLab/phidown
Search, filter, download, and analyze Copernicus Data Space products with the phidown project.
HHU3637kr/skills
Full-stack backend architecture and frontend-backend integration guide.
aspi6246/Claude-Code-Skills-for-Academics
A skill your agent uses whenever working with the Canvas LMS REST API — including creating or updating modules, pages, and files for a course, building sync scripts, managing course structure…
google/skills
Creates Cloud Storage on Google Cloud (also known colloquially as GCS) buckets.
microsoft/skills
Azure Blob Storage SDK for Python. An agent skill from microsoft/skills.
aiskillstore/marketplace
Python SDK for inference.sh - run AI apps, build agents, and integrate with 150+ models.
jeremylongshore/tons-of-skills-marketplace
Execute this skill enables AI assistant to conduct a security-focused code review using the security-agent plugin.
jeremylongshore/tons-of-skills-marketplace
Build this skill automates the adaptation of pre-trained machine learning models using transfer learning techniques.
jeremylongshore/tons-of-skills-marketplace
Execute proactive auto-loading: automatically detects and loads agents.md files.
jeremylongshore/tons-of-skills-marketplace
Aggregate and centralize performance metrics from applications, systems, databases, caches, and services.
jeremylongshore/tons-of-skills-marketplace
Execute this skill enables AI assistant to analyze capacity requirements and plan for future growth.
jeremylongshore/tons-of-skills-marketplace
Process use when you need to work with database indexing. An agent skill from jeremylongshore/tons-of-skills-marketplace.
Works with
Categories
Manage OCI Object Storage — buckets, uploads, PARs, and lifecycle policies. Oraclecloud Data Handling is an agent skill from jeremylongshore/tons-of-skills-marketplace. Manage OCI Object Storage — buckets, uploads, PARs, and lifecycle policies.
Oraclecloud Data Handling fits situations like: uploading objects; creating pre-authenticated requests; configuring lifecycle rules; with oci object storage.
Run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill oraclecloud-data-handling -a claude-code`. Or copy the skill folder (skills/.curated/oraclecloud-data-handling in jeremylongshore/tons-of-skills-marketplace) into .claude/skills/oraclecloud-data-handling in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill oraclecloud-data-handling -a codex`. Or copy the skill folder (skills/.curated/oraclecloud-data-handling in jeremylongshore/tons-of-skills-marketplace) into .agents/skills/oraclecloud-data-handling 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 jeremylongshore/tons-of-skills-marketplace --skill oraclecloud-data-handling -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/oraclecloud-data-handling, .gemini/skills/oraclecloud-data-handling, .github/skills/oraclecloud-data-handling and .opencode/skills/oraclecloud-data-handling in your project.
Going by SKILL.md and its folder, Oraclecloud Data Handling needs the command-line tools its instructions call (pip). Our summary lists: Python 3. Its frontmatter pre-approves these tools: Read, Write, Edit, Bash(pip:*), Grep. Compatibility (from SKILL.md): Designed for Claude Code.
SKILL.md names 2 domains. As links in the text: docs.oracle.com and oracle.com. 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.
Oraclecloud Data Handling is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 372 tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Oraclecloud Data Handling: Phidown (ESA-PhiLab/phidown, 105 stars), Fullstack Dev (HHU3637kr/skills, 145 stars), Canvas Lms API (aspi6246/Claude-Code-Skills-for-Academics, 159 stars) and Google Cloud Storage Bucket Architect (google/skills, 21k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
jeremylongshore (a GitHub user) maintains it in jeremylongshore/tons-of-skills-marketplace, which has 2,827 GitHub stars. The repository holds 3,342 skills in this directory. The repository was last updated on October 10, 2026.
Source: jeremylongshore/tons-of-skills-marketplace on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.