Назад към всички

pinme

// This skill should be used when the user asks to "deploy", "upload", "publish", or "pin" any files, folders, frontend projects, or static websites to IPFS. Also activates when user mentions "pinme", "IPFS", or wants to share files via decentralized storage.

$ git log --oneline --stat
stars:2,955
forks:561
updated:March 2, 2026
SKILL.mdreadonly
SKILL.md Frontmatter
namepinme
version1.0.0
descriptionThis skill should be used when the user asks to "deploy", "upload", "publish", or "pin" any files, folders, frontend projects, or static websites to IPFS. Also activates when user mentions "pinme", "IPFS", or wants to share files via decentralized storage.
author[object Object]
homepagehttps://github.com/glitternetwork/skills/tree/main/pinme
repositoryhttps://github.com/glitternetwork/skills
licenseMIT
keywordsdeploy,ipfs,upload,files,pinme,hosting,frontend,web3,storage

PinMe Skill

Use PinMe CLI to upload files and get a preview URL.

When to Use

General File Upload

  • User wants to upload any files or folders to IPFS
  • User wants to share files via decentralized storage
  • User mentions "pinme", "pin", "IPFS", or "upload to IPFS"

Website Deployment

  • User requests deployment of a frontend project
  • User wants to deploy a static website
  • After building a frontend project (Vue, React, Next.js, etc.)

Upload Steps

1. Check if PinMe is Installed

pinme --version

If not installed:

npm install -g pinme

2. Identify Upload Target

For general files:

  • Use the file or directory path specified by the user
  • Can be any file type: images, documents, archives, etc.

For website deployment: Look for build output directories (in priority order):

  1. dist/ - Vue/React/Vite default output
  2. build/ - Create React App output
  3. out/ - Next.js static export
  4. public/ - Pure static projects

3. Execute Upload

pinme upload <path>

Examples:

# Upload a single file
pinme upload ./document.pdf

# Upload a folder
pinme upload ./my-folder

# Upload website build output
pinme upload dist

4. Return Result

After successful upload, return the preview URL:

https://pinme.eth.limo/#/preview/<hash>

Users can visit the preview page to:

  • View or download the uploaded files
  • Get a fixed domain: https://<name>.pinit.eth.limo

Router Mode Check

Before building a frontend project for IPFS deployment, ensure it uses hash mode routing (e.g., /#/about). History mode (e.g., /about) will cause 404 errors on sub-routes when deployed to IPFS, because there is no server to handle fallback routing.

  • React: Use HashRouter instead of BrowserRouter
  • Vue: Use createWebHashHistory() instead of createWebHistory()

Important Rules

DO:

  • Verify the file or directory exists before uploading
  • Return the preview URL to the user

DO NOT:

  • Upload node_modules/
  • Upload .env files
  • Upload .git/ directory
  • Upload empty or non-existent paths

For website deployment, also avoid:

  • Uploading source code instead of build output
  • Uploading configuration files (package.json, tsconfig.json, etc.)

Common Workflows

General File Upload

# Upload a single file
pinme upload ./image.png

# Upload a folder
pinme upload ./my-documents

# Upload with specific path
pinme upload /path/to/files

Website Deployment

Vue/Vite

npm run build
pinme upload dist

React CRA

npm run build
pinme upload build

Next.js Static

npm run build
npm run export  # or next export
pinme upload out

Error Handling

ErrorSolution
command not found: pinmeRun npm install -g pinme
No such file or directoryCheck path exists
Permission deniedCheck file/folder permissions
Upload failedCheck network, retry

Other Commands

# List upload history
pinme list
pinme ls -l 5

# Remove uploaded file
pinme rm <hash>