{
  "schemaVersion": "1.0",
  "item": {
    "slug": "storacha-upload",
    "name": "Storacha Upload",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/adielliot37/storacha-upload",
    "canonicalUrl": "https://clawhub.ai/adielliot37/storacha-upload",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/storacha-upload",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=storacha-upload",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "scripts/storacha-health-check.sh",
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "storacha-upload",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-01T10:26:18.077Z",
      "expiresAt": "2026-05-08T10:26:18.077Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=storacha-upload",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=storacha-upload",
        "contentDisposition": "attachment; filename=\"storacha-upload-1.3.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "storacha-upload"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/storacha-upload"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/storacha-upload",
    "agentPageUrl": "https://openagent3.xyz/skills/storacha-upload/agent",
    "manifestUrl": "https://openagent3.xyz/skills/storacha-upload/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/storacha-upload/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Storacha Upload",
        "body": "Upload, manage, and retrieve files on IPFS via Storacha decentralized storage.\n\nAGENT EXECUTION NOTE: All storacha CLI commands in this skill are non-interactive when arguments are provided. You MUST execute them directly — never tell the user to \"run this command manually\" or say \"I can't run this\". The only user interaction needed is: (1) asking for their email for login, and (2) telling them to click the verification email link. Everything else you handle silently.\n\nPUBLIC DATA WARNING: All files uploaded to Storacha/IPFS are publicly accessible. Anyone with the CID can retrieve them. Never upload unencrypted sensitive data.\n\nPERMANENT DATA WARNING: Removing a file only deletes it from your listing. Other IPFS nodes may retain copies indefinitely. Treat every upload as permanent."
      },
      {
        "title": "Understanding User Intent",
        "body": "Users will send casual, natural language messages. Match their intent to the correct action:\n\nUser says something like...Action\"upload this image/photo/file\", \"save this to IPFS\", \"put this on storacha\", \"store this pic\"Upload — save the attached/referenced file, then upload with storacha up\"how much space do I have\", \"storage left?\", \"am I running out of space\", \"check my usage\"Usage — run storacha usage report and show human-readable stats\"create a space\", \"make a new space\", \"new storage space\"Create Space — ask for a name (or suggest one), run storacha space create \"Name\" --no-recovery\"login to storacha\", \"set up storacha\", \"connect my storacha\", \"authenticate\"Login — start the authentication flow (Step 2a)\"show my uploads\", \"what have I uploaded\", \"list my files\", \"my IPFS files\"List — run storacha ls and present results\"delete this\", \"remove this upload\", \"remove CID\"Remove — run storacha rm CID with appropriate warnings\"get me the link\", \"share this file\", \"IPFS link for this\", \"download link\"Retrieve — construct and share both gateway URLs\"switch space\", \"use my other space\", \"change space\"Switch Space — run storacha space ls, then storacha space use\"check storacha\", \"storacha status\", \"is storacha working\"Health Check — run full diagnostic (Steps 1-5)\n\nRules for handling user messages:\n\nAlways check authentication first. Before any operation, silently run storacha whoami. If not authenticated, start the login flow and tell the user what's happening.\nHandle file attachments. If the user sends a file/image/document with a message like \"upload this\", save the attachment to a temp location first, then run storacha up on it. After upload, share the gateway URL back.\nBe proactive with results. After uploading, always share the gateway link. After checking usage, always convert bytes to human-readable. After listing uploads, format them neatly.\nDon't dump raw CLI output. Parse command output and respond in friendly, conversational language. The user doesn't want to see raw terminal text.\nAuto-recover from errors. If a command fails because there's no active space, silently fix it (create or select a space) and retry. Only ask the user if you truly need their input (like their email for login)."
      },
      {
        "title": "Prerequisites",
        "body": "Run this before anything else:\n\nwhich storacha && storacha --version\n\nIf storacha is not found, install it:\n\nnpm install -g @storacha/cli\n\nRequires Node.js v18+. Verify with node -v. If missing or outdated, direct the user to nodejs.org."
      },
      {
        "title": "First-Time Setup & Authentication",
        "body": "Complete these steps in order before any upload operation."
      },
      {
        "title": "Step 1 — Check CLI Installation",
        "body": "which storacha && storacha --version\n\nExpected output:\n\n/usr/local/bin/storacha\nx.y.z\n\nIf missing, install:\n\nnpm install -g @storacha/cli\n\nThen re-run the check. If install fails, verify Node.js v18+ is available."
      },
      {
        "title": "Step 2 — Check Authentication",
        "body": "storacha whoami\n\nIf output contains did:key: → authenticated. Proceed to Step 3.\n\nIf error or no DID → not logged in. Go to Step 2a."
      },
      {
        "title": "Step 2a — Login Flow",
        "body": "This is a conversation with the user. The user may be chatting from Telegram, WhatsApp, Discord, or any other platform. Guide them through each step and wait for their response before moving on.\n\nStep A — Ask for email:\n\nIf the user hasn't provided their email yet, ask:\n\n\"To use Storacha, I need to log you in. What's your email address? If you don't have a Storacha account yet, you can sign up for free at https://console.storacha.network and then give me your email.\"\n\nIf the user already provided their email (e.g. \"login to storacha, my email is user@example.com\"), skip asking and go straight to Step B.\n\nDO NOT proceed until you have the user's email address.\n\nStep B — Run login:\n\nIMPORTANT: The storacha login command is NOT interactive when you pass the email as an argument. You MUST run it directly. Do NOT tell the user to run it manually. Do NOT say you can't run it. YOU run it.\n\nstoracha login user@example.com\n\nReplace user@example.com with the actual email the user gave you. This command:\n\nTakes the email as a command-line argument (no prompts, no interactive input needed)\nSends a verification email automatically\nBlocks (waits) until the user clicks the link in their email\nReturns Agent was authorized by did:mailto:... on success\n\nRight after running the command, message the user:\n\n\"I've started the login process. A verification link has been sent to user@example.com. Please check your inbox (and spam folder) and click the link. I'm waiting for confirmation.\"\n\nDO NOT run any other commands while waiting. The CLI will automatically detect when the user clicks the link.\n\nStep C — Handle new accounts:\n\nIf this is the user's first time, they may need to select a plan after clicking the verification link. Inform them:\n\n\"Since this is your first login, you may be asked to pick a plan on the page that opens. Here are your options:\"\n\nPlanPriceStorageEgressOverageMild (Free)$0/month5 GB5 GB$0.15/GBMedium$10/month100 GB100 GB$0.05/GBExtra Spicy$100/month2 TB2 TB$0.03/GB\n\n\"The free Mild plan gives you 5 GB which is enough to get started.\"\n\nStep D — Confirm success:\n\nAfter the CLI returns successfully, verify by running:\n\nstoracha whoami\n\nIf it returns a did:key: value, tell the user:\n\n\"You're all set! Successfully logged in to Storacha.\"\n\nIf it fails, ask the user to try clicking the verification link again or check if they used the correct email."
      },
      {
        "title": "Step 3 — Check Spaces",
        "body": "storacha space ls\n\nExpected output:\n\n* did:key:z6Mk... SpaceName\n  did:key:z6Mk... AnotherSpace\n\nThe * marks the active space.\n\nIf spaces exist with * marker → active space is set. Proceed to Step 4.\n\n\nIf no spaces exist → automatically create one:\nstoracha space create \"MyFiles\" --no-recovery\n\nThen tell the user:\n\n\"I've created a storage space called 'MyFiles' for you. This is where your uploads will be stored.\"\n\nSpace names are permanent and cannot be changed.\n\n\nIf spaces exist but none is active → pick the first one and activate it:\nstoracha space use \"SpaceName\"\n\nThen tell the user:\n\n\"I've set 'SpaceName' as your active storage space.\"\n\nHandle all of this silently without asking the user to run commands. The user is chatting — they expect you to do the work and just confirm what happened."
      },
      {
        "title": "Step 4 — Verify Provider Registration",
        "body": "storacha space info\n\nExpected output includes:\n\nProviders: did:web:web3.storage\n\nIf no provider is listed, the space is not registered. Direct the user to https://console.storacha.network to register the space, or create a new space."
      },
      {
        "title": "Step 5 — Check Storage Usage",
        "body": "storacha usage report\n\nExpected output format:\n\nAccount: did:mailto:...\nProvider: did:web:web3.storage\nSpace: did:key:z6Mk...\nSize: 123456789\n\nParse the Size value and convert to human-readable format:\n\n< 1024 → bytes\n< 1,048,576 → KB\n< 1,073,741,824 → MB\n\n\n= 1,073,741,824 → GB\n\nPresent a status dashboard to the user:\n\n╔══════════════════════════════════════╗\n║       Storacha Status Dashboard      ║\n╠══════════════════════════════════════╣\n║ Account:  did:mailto:user@email.com  ║\n║ Space:    MyFiles (did:key:z6Mk...)  ║\n║ Storage:  117.7 MB used              ║\n║ Plan:     Mild (Free) — 5 GB limit   ║\n╚══════════════════════════════════════╝\n\nIf storage is above 80% of plan limit, warn the user and suggest upgrading or removing old uploads.\n\nIf the usage report returns a permission error, inform the user but note that uploads may still work."
      },
      {
        "title": "Upload a File",
        "body": "When a user asks to upload something (file, image, photo, document, video, etc.):\n\nIf the user attached a file — save it to a temp location (e.g. /tmp/upload/filename.ext)\nIf the user referenced a file path — use that path directly\nSilently verify auth and active space — run storacha whoami and storacha space ls. Fix any issues without bothering the user.\nUpload:\n\nstoracha up /path/to/file\n\nParse the output and respond conversationally:\n\n\"Done! Your file is uploaded to IPFS. Here's your link:\nhttps://storacha.link/ipfs/bafy...\nAnyone with this link can access the file.\"\n\nAlways provide both gateway URL styles:\n\nPath style: https://storacha.link/ipfs/CID\nSubdomain style: https://CID.ipfs.storacha.link\n\nIf uploading an image/photo, also mention:\n\n\"You can share this link directly — it works in any browser.\""
      },
      {
        "title": "Upload a Directory",
        "body": "storacha up /path/to/directory/\n\nDotfiles (hidden files) are excluded by default. Use --hidden to include them.\nUse --no-wrap to upload without wrapping in a directory (loses filename in URL).\n\nFor directory uploads, files are accessible at:\n\nhttps://storacha.link/ipfs/CID/filename.txt"
      },
      {
        "title": "List Uploads",
        "body": "storacha ls\n\nDisplays all uploads in the current space with their CIDs."
      },
      {
        "title": "Remove an Upload",
        "body": "storacha rm CID\n\nTo also remove underlying data shards:\n\nstoracha rm CID --shards\n\nWarn the user: removal only deletes from your listing. The data may persist on other IPFS nodes indefinitely."
      },
      {
        "title": "Retrieve / Open a File",
        "body": "Open in browser:\n\nstoracha open CID\n\nDownload programmatically:\n\ncurl -o output.txt \"https://storacha.link/ipfs/CID\"\n\nSubdomain style:\n\ncurl -o output.txt \"https://CID.ipfs.storacha.link\""
      },
      {
        "title": "Space Management",
        "body": "Create a space:\n\nstoracha space create \"ProjectName\" --no-recovery\n\nIMPORTANT: Always use --no-recovery flag. Without it, the CLI prompts interactively for a recovery key which will hang in non-interactive environments. Space names are permanent and cannot be changed after creation.\n\nList all spaces:\n\nstoracha space ls\n\nThe active space is marked with *.\n\nSwitch active space:\n\nstoracha space use \"SpaceName\"\n\nOr by DID:\n\nstoracha space use did:key:z6Mk...\n\nView space details:\n\nstoracha space info\n\nShows the space DID and registered providers."
      },
      {
        "title": "Sharing & Delegation",
        "body": "Create a UCAN delegation for another agent:\n\nstoracha delegation create AUDIENCE_DID --can store/add --can upload/add --output ./delegation.ucan\n\nFull admin delegation:\n\nstoracha delegation create AUDIENCE_DID --can '*' --output ./admin.ucan --base64\n\nList active delegations:\n\nstoracha delegation ls"
      },
      {
        "title": "Error Handling",
        "body": "\"command not found: storacha\" → Install CLI: npm install -g @storacha/cli\n\"no proofs available for resource\" → Re-login with storacha login EMAIL or switch spaces with storacha space use \"Name\"\n\"Not registered with provider\" → Run storacha space info to check providers. Re-register at https://console.storacha.network or create a new space.\nUpload hangs or times out → Check internet connection. Retry the upload. For large files, ensure stable connectivity.\n\"usage/report\" permission error → This is informational only. Uploads should still work. Proceed with the operation.\n\"no spaces\" or empty space list → Create a space: storacha space create \"MyFiles\" --no-recovery\nStorage limit errors → Upgrade plan at https://console.storacha.network or remove old uploads: storacha rm CID --shards"
      },
      {
        "title": "Quick Reference",
        "body": "ActionCommandInstall CLInpm install -g @storacha/cliLoginstoracha login user@email.comCheck identitystoracha whoamiCreate spacestoracha space create \"Name\" --no-recovery (always use --no-recovery)List spacesstoracha space lsSwitch spacestoracha space use \"Name\"Space detailsstoracha space infoUpload filestoracha up /path/to/fileUpload directorystoracha up /path/to/dir/Upload without wrapstoracha up /path --no-wrapUpload with dotfilesstoracha up /path --hiddenList uploadsstoracha lsRemove uploadstoracha rm CIDRemove with shardsstoracha rm CID --shardsOpen in browserstoracha open CIDCheck usagestoracha usage reportCreate delegationstoracha delegation create DID --can store/add --output file.ucanList delegationsstoracha delegation ls"
      },
      {
        "title": "Important Notes",
        "body": "Authentication is email-based using DIDs and UCAN. There are no API keys or tokens.\nSpaces are storage namespaces identified by did:key. Each space tracks its own uploads independently.\nContent-addressing means every file gets a unique CID based on its contents. Identical files produce identical CIDs.\nFilecoin backup provides cryptographic proof of storage on the Filecoin network.\nTwo gateway URL styles are available:\n\nPath: https://storacha.link/ipfs/CID\nSubdomain: https://CID.ipfs.storacha.link\n\n\nThe current CLI binary is storacha. It was previously called w3 during the web3.storage era."
      }
    ],
    "body": "Storacha Upload\n\nUpload, manage, and retrieve files on IPFS via Storacha decentralized storage.\n\nAGENT EXECUTION NOTE: All storacha CLI commands in this skill are non-interactive when arguments are provided. You MUST execute them directly — never tell the user to \"run this command manually\" or say \"I can't run this\". The only user interaction needed is: (1) asking for their email for login, and (2) telling them to click the verification email link. Everything else you handle silently.\n\nPUBLIC DATA WARNING: All files uploaded to Storacha/IPFS are publicly accessible. Anyone with the CID can retrieve them. Never upload unencrypted sensitive data.\n\nPERMANENT DATA WARNING: Removing a file only deletes it from your listing. Other IPFS nodes may retain copies indefinitely. Treat every upload as permanent.\n\nUnderstanding User Intent\n\nUsers will send casual, natural language messages. Match their intent to the correct action:\n\nUser says something like...\tAction\n\"upload this image/photo/file\", \"save this to IPFS\", \"put this on storacha\", \"store this pic\"\tUpload — save the attached/referenced file, then upload with storacha up\n\"how much space do I have\", \"storage left?\", \"am I running out of space\", \"check my usage\"\tUsage — run storacha usage report and show human-readable stats\n\"create a space\", \"make a new space\", \"new storage space\"\tCreate Space — ask for a name (or suggest one), run storacha space create \"Name\" --no-recovery\n\"login to storacha\", \"set up storacha\", \"connect my storacha\", \"authenticate\"\tLogin — start the authentication flow (Step 2a)\n\"show my uploads\", \"what have I uploaded\", \"list my files\", \"my IPFS files\"\tList — run storacha ls and present results\n\"delete this\", \"remove this upload\", \"remove CID\"\tRemove — run storacha rm CID with appropriate warnings\n\"get me the link\", \"share this file\", \"IPFS link for this\", \"download link\"\tRetrieve — construct and share both gateway URLs\n\"switch space\", \"use my other space\", \"change space\"\tSwitch Space — run storacha space ls, then storacha space use\n\"check storacha\", \"storacha status\", \"is storacha working\"\tHealth Check — run full diagnostic (Steps 1-5)\n\nRules for handling user messages:\n\nAlways check authentication first. Before any operation, silently run storacha whoami. If not authenticated, start the login flow and tell the user what's happening.\nHandle file attachments. If the user sends a file/image/document with a message like \"upload this\", save the attachment to a temp location first, then run storacha up on it. After upload, share the gateway URL back.\nBe proactive with results. After uploading, always share the gateway link. After checking usage, always convert bytes to human-readable. After listing uploads, format them neatly.\nDon't dump raw CLI output. Parse command output and respond in friendly, conversational language. The user doesn't want to see raw terminal text.\nAuto-recover from errors. If a command fails because there's no active space, silently fix it (create or select a space) and retry. Only ask the user if you truly need their input (like their email for login).\nPrerequisites\n\nRun this before anything else:\n\nwhich storacha && storacha --version\n\n\nIf storacha is not found, install it:\n\nnpm install -g @storacha/cli\n\n\nRequires Node.js v18+. Verify with node -v. If missing or outdated, direct the user to nodejs.org.\n\nFirst-Time Setup & Authentication\n\nComplete these steps in order before any upload operation.\n\nStep 1 — Check CLI Installation\nwhich storacha && storacha --version\n\n\nExpected output:\n\n/usr/local/bin/storacha\nx.y.z\n\n\nIf missing, install:\n\nnpm install -g @storacha/cli\n\n\nThen re-run the check. If install fails, verify Node.js v18+ is available.\n\nStep 2 — Check Authentication\nstoracha whoami\n\n\nIf output contains did:key: → authenticated. Proceed to Step 3.\n\nIf error or no DID → not logged in. Go to Step 2a.\n\nStep 2a — Login Flow\n\nThis is a conversation with the user. The user may be chatting from Telegram, WhatsApp, Discord, or any other platform. Guide them through each step and wait for their response before moving on.\n\nStep A — Ask for email:\n\nIf the user hasn't provided their email yet, ask:\n\n\"To use Storacha, I need to log you in. What's your email address? If you don't have a Storacha account yet, you can sign up for free at https://console.storacha.network and then give me your email.\"\n\nIf the user already provided their email (e.g. \"login to storacha, my email is user@example.com\"), skip asking and go straight to Step B.\n\nDO NOT proceed until you have the user's email address.\n\nStep B — Run login:\n\nIMPORTANT: The storacha login command is NOT interactive when you pass the email as an argument. You MUST run it directly. Do NOT tell the user to run it manually. Do NOT say you can't run it. YOU run it.\n\nstoracha login user@example.com\n\n\nReplace user@example.com with the actual email the user gave you. This command:\n\nTakes the email as a command-line argument (no prompts, no interactive input needed)\nSends a verification email automatically\nBlocks (waits) until the user clicks the link in their email\nReturns Agent was authorized by did:mailto:... on success\n\nRight after running the command, message the user:\n\n\"I've started the login process. A verification link has been sent to user@example.com. Please check your inbox (and spam folder) and click the link. I'm waiting for confirmation.\"\n\nDO NOT run any other commands while waiting. The CLI will automatically detect when the user clicks the link.\n\nStep C — Handle new accounts:\n\nIf this is the user's first time, they may need to select a plan after clicking the verification link. Inform them:\n\n\"Since this is your first login, you may be asked to pick a plan on the page that opens. Here are your options:\"\n\nPlan\tPrice\tStorage\tEgress\tOverage\nMild (Free)\t$0/month\t5 GB\t5 GB\t$0.15/GB\nMedium\t$10/month\t100 GB\t100 GB\t$0.05/GB\nExtra Spicy\t$100/month\t2 TB\t2 TB\t$0.03/GB\n\n\"The free Mild plan gives you 5 GB which is enough to get started.\"\n\nStep D — Confirm success:\n\nAfter the CLI returns successfully, verify by running:\n\nstoracha whoami\n\n\nIf it returns a did:key: value, tell the user:\n\n\"You're all set! Successfully logged in to Storacha.\"\n\nIf it fails, ask the user to try clicking the verification link again or check if they used the correct email.\n\nStep 3 — Check Spaces\nstoracha space ls\n\n\nExpected output:\n\n* did:key:z6Mk... SpaceName\n  did:key:z6Mk... AnotherSpace\n\n\nThe * marks the active space.\n\nIf spaces exist with * marker → active space is set. Proceed to Step 4.\n\nIf no spaces exist → automatically create one:\n\nstoracha space create \"MyFiles\" --no-recovery\n\n\nThen tell the user:\n\n\"I've created a storage space called 'MyFiles' for you. This is where your uploads will be stored.\"\n\nSpace names are permanent and cannot be changed.\n\nIf spaces exist but none is active → pick the first one and activate it:\n\nstoracha space use \"SpaceName\"\n\n\nThen tell the user:\n\n\"I've set 'SpaceName' as your active storage space.\"\n\nHandle all of this silently without asking the user to run commands. The user is chatting — they expect you to do the work and just confirm what happened.\n\nStep 4 — Verify Provider Registration\nstoracha space info\n\n\nExpected output includes:\n\nProviders: did:web:web3.storage\n\n\nIf no provider is listed, the space is not registered. Direct the user to https://console.storacha.network to register the space, or create a new space.\n\nStep 5 — Check Storage Usage\nstoracha usage report\n\n\nExpected output format:\n\nAccount: did:mailto:...\nProvider: did:web:web3.storage\nSpace: did:key:z6Mk...\nSize: 123456789\n\n\nParse the Size value and convert to human-readable format:\n\n< 1024 → bytes\n< 1,048,576 → KB\n< 1,073,741,824 → MB\n\n= 1,073,741,824 → GB\n\nPresent a status dashboard to the user:\n\n╔══════════════════════════════════════╗\n║       Storacha Status Dashboard      ║\n╠══════════════════════════════════════╣\n║ Account:  did:mailto:user@email.com  ║\n║ Space:    MyFiles (did:key:z6Mk...)  ║\n║ Storage:  117.7 MB used              ║\n║ Plan:     Mild (Free) — 5 GB limit   ║\n╚══════════════════════════════════════╝\n\n\nIf storage is above 80% of plan limit, warn the user and suggest upgrading or removing old uploads.\n\nIf the usage report returns a permission error, inform the user but note that uploads may still work.\n\nCore Operations\nUpload a File\n\nWhen a user asks to upload something (file, image, photo, document, video, etc.):\n\nIf the user attached a file — save it to a temp location (e.g. /tmp/upload/filename.ext)\nIf the user referenced a file path — use that path directly\nSilently verify auth and active space — run storacha whoami and storacha space ls. Fix any issues without bothering the user.\nUpload:\nstoracha up /path/to/file\n\nParse the output and respond conversationally:\n\n\"Done! Your file is uploaded to IPFS. Here's your link: https://storacha.link/ipfs/bafy... Anyone with this link can access the file.\"\n\nAlways provide both gateway URL styles:\n\nPath style: https://storacha.link/ipfs/CID\nSubdomain style: https://CID.ipfs.storacha.link\n\nIf uploading an image/photo, also mention:\n\n\"You can share this link directly — it works in any browser.\"\n\nUpload a Directory\nstoracha up /path/to/directory/\n\nDotfiles (hidden files) are excluded by default. Use --hidden to include them.\nUse --no-wrap to upload without wrapping in a directory (loses filename in URL).\n\nFor directory uploads, files are accessible at:\n\nhttps://storacha.link/ipfs/CID/filename.txt\n\nList Uploads\nstoracha ls\n\n\nDisplays all uploads in the current space with their CIDs.\n\nRemove an Upload\nstoracha rm CID\n\n\nTo also remove underlying data shards:\n\nstoracha rm CID --shards\n\n\nWarn the user: removal only deletes from your listing. The data may persist on other IPFS nodes indefinitely.\n\nRetrieve / Open a File\n\nOpen in browser:\n\nstoracha open CID\n\n\nDownload programmatically:\n\ncurl -o output.txt \"https://storacha.link/ipfs/CID\"\n\n\nSubdomain style:\n\ncurl -o output.txt \"https://CID.ipfs.storacha.link\"\n\nSpace Management\n\nCreate a space:\n\nstoracha space create \"ProjectName\" --no-recovery\n\n\nIMPORTANT: Always use --no-recovery flag. Without it, the CLI prompts interactively for a recovery key which will hang in non-interactive environments. Space names are permanent and cannot be changed after creation.\n\nList all spaces:\n\nstoracha space ls\n\n\nThe active space is marked with *.\n\nSwitch active space:\n\nstoracha space use \"SpaceName\"\n\n\nOr by DID:\n\nstoracha space use did:key:z6Mk...\n\n\nView space details:\n\nstoracha space info\n\n\nShows the space DID and registered providers.\n\nSharing & Delegation\n\nCreate a UCAN delegation for another agent:\n\nstoracha delegation create AUDIENCE_DID --can store/add --can upload/add --output ./delegation.ucan\n\n\nFull admin delegation:\n\nstoracha delegation create AUDIENCE_DID --can '*' --output ./admin.ucan --base64\n\n\nList active delegations:\n\nstoracha delegation ls\n\nError Handling\n\"command not found: storacha\" → Install CLI: npm install -g @storacha/cli\n\"no proofs available for resource\" → Re-login with storacha login EMAIL or switch spaces with storacha space use \"Name\"\n\"Not registered with provider\" → Run storacha space info to check providers. Re-register at https://console.storacha.network or create a new space.\nUpload hangs or times out → Check internet connection. Retry the upload. For large files, ensure stable connectivity.\n\"usage/report\" permission error → This is informational only. Uploads should still work. Proceed with the operation.\n\"no spaces\" or empty space list → Create a space: storacha space create \"MyFiles\" --no-recovery\nStorage limit errors → Upgrade plan at https://console.storacha.network or remove old uploads: storacha rm CID --shards\nQuick Reference\nAction\tCommand\nInstall CLI\tnpm install -g @storacha/cli\nLogin\tstoracha login user@email.com\nCheck identity\tstoracha whoami\nCreate space\tstoracha space create \"Name\" --no-recovery (always use --no-recovery)\nList spaces\tstoracha space ls\nSwitch space\tstoracha space use \"Name\"\nSpace details\tstoracha space info\nUpload file\tstoracha up /path/to/file\nUpload directory\tstoracha up /path/to/dir/\nUpload without wrap\tstoracha up /path --no-wrap\nUpload with dotfiles\tstoracha up /path --hidden\nList uploads\tstoracha ls\nRemove upload\tstoracha rm CID\nRemove with shards\tstoracha rm CID --shards\nOpen in browser\tstoracha open CID\nCheck usage\tstoracha usage report\nCreate delegation\tstoracha delegation create DID --can store/add --output file.ucan\nList delegations\tstoracha delegation ls\nImportant Notes\nAuthentication is email-based using DIDs and UCAN. There are no API keys or tokens.\nSpaces are storage namespaces identified by did:key. Each space tracks its own uploads independently.\nContent-addressing means every file gets a unique CID based on its contents. Identical files produce identical CIDs.\nFilecoin backup provides cryptographic proof of storage on the Filecoin network.\nTwo gateway URL styles are available:\nPath: https://storacha.link/ipfs/CID\nSubdomain: https://CID.ipfs.storacha.link\nThe current CLI binary is storacha. It was previously called w3 during the web3.storage era."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/adielliot37/storacha-upload",
    "publisherUrl": "https://clawhub.ai/adielliot37/storacha-upload",
    "owner": "adielliot37",
    "version": "1.3.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/storacha-upload",
    "downloadUrl": "https://openagent3.xyz/downloads/storacha-upload",
    "agentUrl": "https://openagent3.xyz/skills/storacha-upload/agent",
    "manifestUrl": "https://openagent3.xyz/skills/storacha-upload/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/storacha-upload/agent.md"
  }
}