Pinme
/SKILLUse this skill when the user mentions "pinme", or needs to upload files, store to IPFS, create/publish/deploy websites or full-stack services (including frontend pages, backend APIs, database storage,
--- name: pinme description: Use this skill when the user mentions "pinme," or needs to upload files, store them on IPFS, create/publish/deploy websites or full-stack services (including frontend pages, backend APIs, database storage, email sending, etc.), or any feature requiring backend database/server support. --- # PinMe Zero-config deployment tool: upload static files to IPFS, or create and deploy full-stack web projects (React+Vite + Cloudflare Worker + D1 database). Workers also support sending emails via the PinMe platform API. ## When to Use ``dot digraph pinme_decision { "User Request" [shape=doublecircle]; "Needs backend API or database?" [shape=diamond]; "Upload Files (Path 1)" [shape=box]; "Full-Stack Project (Path 2)" [shape=box]; "User Request" -> "Needs backend API or database?"; "Needs backend API or database?" -> "Upload Files (Path 1)" [label="No"]; "Needs backend API or database?" -> "Full-Stack Project (Path 2)" [label="Yes"]; } ## Path 1: Upload Files / Static Sites > Login required. Use pinme login or pinme set-appkey <AppKey> before pinme upload or pinme import . dot digraph upload_flow { "Install/update pinme to latest" [shape=box]; "Authenticate" [shape=box]; "Determine build artifacts" [shape=box]; "pinme upload <path>" [shape=box]; "Return preview URL" [shape=doublecircle]; "Install/update pinme to latest" -> "Authenticate"; "Authenticate" -> "Determine build artifacts"; "Determine build artifacts" -> "pinme upload <path>"; "pinme upload <path>" -> "Return preview URL"; } **1. Check installation and update to latest:** bash LOCAL=$(pinme --version 2>/dev/null || echo "0.0.0") LATEST=$(npm view pinme version) [ "$LOCAL" != "$LATEST" ] && npm install -g pinme@latest || echo "pinme is up to date ($LOCAL)" **2. Authenticate:** bash pinme login # or: pinme set-appkey <AppKey> **3. Determine upload target** (priority order): 1. dist/ : Vite / Vue / React 2. build/ : Create React App 3. out/ : Next.js static export 4. public/ : Plain static files **4. Upload:** bash pinme upload <path> pinme upload ./dist --domain my-site # Optional: bind subdomain (wallet balance required) **5. Return** the final URL printed by PinMe to the user. URL priority is: DNS domain > PinMe subdomain > short URL > preview URL. If it falls back to preview, return the **full URL** including all hash characters : do not truncate. ### Common Examples bash pinme upload ./document.pdf # Single file pinme upload ./my-folder # Folder pinme upload dist # Vite/Vue build artifacts pinme upload build # CRA build artifacts pinme upload out # Next.js static export pinme upload ./dist --domain my-site # Bind PinMe subdomain (wallet balance required) pinme import ./my-archive.car # Import CAR file ### Do NOT Upload - node_modules / , .env , .git/ , src/ - Only upload build artifacts, never upload source code --- ## Path 2: Full-Stack Project > Login required. Uses React+Vite frontend + Cloudflare Worker backend + D1 SQLite database. > When designing frontend projects, use Ant Design as the primary design reference, and prioritize following its conventions for layout, components, spacing, and interaction patterns. dot digraph fullstack_flow { "Install/update pinme to latest" [shape=box]; "pinme login" [shape=box]; "pinme create <name>" [shape=box]; "Modify template code" [shape=box]; "pinme save" [shape=box]; "Return preview URL" [shape=doublecircle]; "Install/update pinme to latest" -> "pinme login"; "pinme login" -> "pinme create <name>"; "pinme create <name>" -> "Modify template code"; "Modify template code" -> "pinme save"; "pinme save" -> "Return preview URL"; } ### Architecture | Layer | Tech Stack | Deploy Target | |-------|-----------|---------------| | Frontend | React + Vite (frontend / ) | IPFS | | Backend | Cloudflare Worker (backend /src/ worker.ts) | {name}.pinme.pro | | Database | D1 SQLite ( db/*.sql ) | Cloudflare D1 | ### Core Commands ``bash pinm