{
  "schemaVersion": "1.0",
  "item": {
    "slug": "myvibe-skills",
    "name": "MyVibe Skills",
    "source": "tencent",
    "type": "skill",
    "category": "内容创作",
    "sourceUrl": "https://clawhub.ai/zhuzhuyule/myvibe-skills",
    "canonicalUrl": "https://clawhub.ai/zhuzhuyule/myvibe-skills",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/myvibe-skills",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=myvibe-skills",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/publish.mjs",
      "scripts/package-lock.json",
      "scripts/package.json",
      "scripts/utils/upload.mjs",
      "scripts/utils/upload-image.mjs"
    ],
    "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. 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. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/myvibe-skills"
    },
    "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/myvibe-skills",
    "agentPageUrl": "https://openagent3.xyz/skills/myvibe-skills/agent",
    "manifestUrl": "https://openagent3.xyz/skills/myvibe-skills/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/myvibe-skills/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. 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. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "MyVibe Publish",
        "body": "Publish web content (HTML file, ZIP archive, or directory) to MyVibe."
      },
      {
        "title": "Prerequisites",
        "body": "Node.js 18 or later\nAll script executions in this skill require network access. Always run Bash commands with sandbox_permissions=require_escalated to ensure network permissions are enabled.\nThe deployment and screenshot generation may take a few minutes. Use a 10-minute (600000ms) timeout for publish commands."
      },
      {
        "title": "Usage",
        "body": "/myvibe:myvibe-publish --file ./dist.zip      # Publish ZIP\n/myvibe:myvibe-publish --file ./index.html    # Publish HTML\n/myvibe:myvibe-publish --dir ./dist           # Publish directory\n/myvibe:myvibe-publish --url https://example.com/app  # Import from URL\n/myvibe:myvibe-publish --dir ./dist --new     # Force new Vibe\n/myvibe:myvibe-publish --dir ./dist --did z2qaXXX    # Update specific Vibe"
      },
      {
        "title": "Options",
        "body": "OptionAliasDescription--file <path>-fPath to HTML file or ZIP archive--dir <path>-dDirectory to compress and publish--url <url>-uURL to import and publish--hub <url>-hMyVibe URL (default: https://www.myvibe.so/)--title <title>-tProject title--desc <desc>Project description--visibility <vis>-vVisibility: public or private (default: public)--did <did>Vibe DID for version update (overrides auto-detection)--newForce create new Vibe, ignore publish history"
      },
      {
        "title": "Workflow Overview",
        "body": "Detect Project Type → if no build needed, start screenshot in background\nBuild (if needed) → then start screenshot in background\nMetadata Analysis → extract title, description, tags\nConfirm Publish → show metadata, get user confirmation\nExecute Publish → script auto-reads screenshot result\nReturn Result → show publish URL\n\nFirst tool call - execute in parallel:\n\nRead: source file or main files in directory\nBash: git remote get-url origin 2>/dev/null || echo \"Not a git repo\"\nBash: node {skill_path}/scripts/utils/fetch-tags.mjs --hub {hub}"
      },
      {
        "title": "Step 1: Detect Project Type",
        "body": "CheckProject TypeNext Step--file with HTML/ZIPSingle File→ Start screenshot, then Step 3Has dist/, build/, or out/ with index.htmlPre-built→ Step 2 (confirm rebuild)Has package.json with build script, no outputBuildable→ Step 2 (build first)Multiple package.json or workspace configMonorepo→ Step 2 (select app)Has index.html at root, no package.jsonStatic→ Start screenshot, then Step 3\n\nStart screenshot for non-build projects (run_in_background: true):\n\nFor directory source (--dir):\n\nnode {skill_path}/scripts/utils/generate-screenshot.mjs --dir {publish_target} --hub {hub}\n\nFor single file source (--file):\n\nnode {skill_path}/scripts/utils/generate-screenshot.mjs --file {publish_target} --hub {hub}\n\nIMPORTANT: Use --file when the source is a single HTML file, and --dir when it is a directory. The flag must match the source.type in the publish config so that both scripts calculate the same hash for the screenshot result file.\n\nAfter starting the screenshot background task, use TaskOutput (with block: false) to check the task output before proceeding. If the output contains \"agent-browser is not installed\" or \"Chromium is not installed\":\n\nInstall agent-browser: npm install -g agent-browser && agent-browser install\nRe-run the screenshot command (same command as above, run_in_background: true)\nCheck again with TaskOutput (block: false) to confirm it's running\n\nThis ensures the screenshot can complete successfully in the background while you continue with metadata analysis."
      },
      {
        "title": "Step 2: Build (if needed)",
        "body": "Detect package manager from lock files, build command from package.json scripts.\n\nUse AskUserQuestion to confirm:\n\nPre-built: \"Rebuild or use existing output?\"\nBuildable: \"Build before publishing?\"\nMonorepo: \"Which app to publish?\"\n\nAfter build completes, start screenshot in background (same check as Step 1: use TaskOutput block: false to verify agent-browser is available, install if needed, then retry), then proceed to Step 3."
      },
      {
        "title": "Extract title",
        "body": "Priority: <title> → og:title → package.json name → first <h1>"
      },
      {
        "title": "Generate description (50-150 words, story-style)",
        "body": "Cover: Why (motivation) → What (functionality) → Journey (optional)\n\nSources: conversation history, README.md, source code, package.json, git log\n\nGuidelines:\n\nNatural, conversational tone\nFocus on value and story, not technical specs\nAvoid generic \"A web app built with React\""
      },
      {
        "title": "Extract githubRepo",
        "body": "From git remote or package.json repository field. Convert SSH to HTTPS format."
      },
      {
        "title": "Match tags",
        "body": "Fetch tags: node {skill_path}/scripts/utils/fetch-tags.mjs --hub {hub}\n\nTag TypeMatch MethodtechStackTagsMatch package.json dependencies against tag slugplatformTagsFrom conversation context (Claude Code, Cursor, etc.)modelTagsFrom conversation context (Claude 3.5 Sonnet, GPT-4, etc.)categoryTagsInfer from project (game libs → game, charts → viz)"
      },
      {
        "title": "Step 4: Confirm Publish",
        "body": "Display metadata and use AskUserQuestion:\n\nPublishing to MyVibe:\n──────────────────────\nTitle: [value]\n\nDescription:\n[50-150 word story]\n\nGitHub: [URL or \"Not detected\"]\nCover Image: [Will be included if ready]\n\nTags: Tech Stack: [...] | Platform: [...] | Category: [...] | Model: [...]\n\nOptions: \"Publish\" / \"Edit details\""
      },
      {
        "title": "Step 5: Execute Publish",
        "body": "Check dependencies: If scripts/node_modules missing, run npm install first.\nThe publish script automatically reads the screenshot result file. Execute publish directly:\n\nPass config via stdin:\n\nnode {skill_path}/scripts/publish.mjs --config-stdin <<'EOF'\n{\n  \"source\": { \"type\": \"dir\", \"path\": \"./dist\", \"did\": \"z2qaXXXX\" },\n  \"hub\": \"https://www.myvibe.so\",\n  \"metadata\": {\n    \"title\": \"My App\",\n    \"description\": \"Story description here\",\n    \"visibility\": \"public\",\n    \"githubRepo\": \"https://github.com/user/repo\",\n    \"platformTags\": [1, 2],\n    \"techStackTags\": [3, 4],\n    \"categoryTags\": [5],\n    \"modelTags\": [6]\n  }\n}\nEOF\n\ndid optional - for explicit version updates\ncoverImage auto-read from /tmp/myvibe-screenshot-{hash}.json\nScreenshot result file cleaned up after publish"
      },
      {
        "title": "Step 6: Return Result",
        "body": "After publish script completes, check the script output for these messages:"
      },
      {
        "title": "Success Message",
        "body": "Always include the Vibe URL in your response:\n\nPublished successfully!\n🔗 [URL]"
      },
      {
        "title": "Upgrade Prompt (Important)",
        "body": "The script prints an upgrade prompt when updating an existing Vibe without version history enabled:\n\n📦 Previous version overwritten. Want to keep version history?\n   Upgrade to Creator → {hub}/pricing\n\nYou MUST include this upgrade information in your response to the user if the script output contains it. This helps free-tier users discover the version history feature."
      },
      {
        "title": "Error Handling",
        "body": "ErrorActionDependencies missingRun npm install in scripts directory401/403 Auth errorToken auto-cleared, re-run to authorizeBuild failedAnalyze error, offer fix, or publish source as-isScreenshot failedSkip coverImage, proceed without itagent-browser missingRun npm install -g agent-browser && agent-browser installScript execution failed (network/sandbox)Check if network permissions are enabled. Add sandbox_permissions=require_escalated and retryPrivate mode is only available for Creator and Studio usersSee \"Private Mode Error Handling\" below"
      },
      {
        "title": "Private Mode Error Handling",
        "body": "When publishing with visibility: private fails with \"Private mode is only available for Creator and Studio users\", use AskUserQuestion to let the user choose:\n\nQuestion: \"Private publishing requires a Creator or Studio subscription. How would you like to proceed?\"\n\nOptionLabelDescription1Publish as PublicYour Vibe will be visible to everyone. You can change this later after upgrading.2View Upgrade OptionsOpen the pricing page to explore subscription plans with private publishing.\n\nActions based on selection:\n\nOption 1: Re-run publish with visibility: \"public\", inform user the Vibe is now public\nOption 2: Display the pricing URL {hub}/pricing and stop the publish flow"
      },
      {
        "title": "Notes",
        "body": "Always analyze content for meaningful title/description - never use directory names\nConfirm with user before publishing\nDefault hub: https://www.myvibe.so/\nTags fetched fresh from API on each publish\nPublish history in ~/.myvibe/published.yaml for auto version updates\nUse --new to force new Vibe instead of updating"
      }
    ],
    "body": "MyVibe Publish\n\nPublish web content (HTML file, ZIP archive, or directory) to MyVibe.\n\nPrerequisites\nNode.js 18 or later\nAll script executions in this skill require network access. Always run Bash commands with sandbox_permissions=require_escalated to ensure network permissions are enabled.\nThe deployment and screenshot generation may take a few minutes. Use a 10-minute (600000ms) timeout for publish commands.\nUsage\n/myvibe:myvibe-publish --file ./dist.zip      # Publish ZIP\n/myvibe:myvibe-publish --file ./index.html    # Publish HTML\n/myvibe:myvibe-publish --dir ./dist           # Publish directory\n/myvibe:myvibe-publish --url https://example.com/app  # Import from URL\n/myvibe:myvibe-publish --dir ./dist --new     # Force new Vibe\n/myvibe:myvibe-publish --dir ./dist --did z2qaXXX    # Update specific Vibe\n\nOptions\nOption\tAlias\tDescription\n--file <path>\t-f\tPath to HTML file or ZIP archive\n--dir <path>\t-d\tDirectory to compress and publish\n--url <url>\t-u\tURL to import and publish\n--hub <url>\t-h\tMyVibe URL (default: https://www.myvibe.so/)\n--title <title>\t-t\tProject title\n--desc <desc>\t\tProject description\n--visibility <vis>\t-v\tVisibility: public or private (default: public)\n--did <did>\t\tVibe DID for version update (overrides auto-detection)\n--new\t\tForce create new Vibe, ignore publish history\nWorkflow Overview\nDetect Project Type → if no build needed, start screenshot in background\nBuild (if needed) → then start screenshot in background\nMetadata Analysis → extract title, description, tags\nConfirm Publish → show metadata, get user confirmation\nExecute Publish → script auto-reads screenshot result\nReturn Result → show publish URL\n\nFirst tool call - execute in parallel:\n\nRead: source file or main files in directory\nBash: git remote get-url origin 2>/dev/null || echo \"Not a git repo\"\nBash: node {skill_path}/scripts/utils/fetch-tags.mjs --hub {hub}\nStep 1: Detect Project Type\nCheck\tProject Type\tNext Step\n--file with HTML/ZIP\tSingle File\t→ Start screenshot, then Step 3\nHas dist/, build/, or out/ with index.html\tPre-built\t→ Step 2 (confirm rebuild)\nHas package.json with build script, no output\tBuildable\t→ Step 2 (build first)\nMultiple package.json or workspace config\tMonorepo\t→ Step 2 (select app)\nHas index.html at root, no package.json\tStatic\t→ Start screenshot, then Step 3\n\nStart screenshot for non-build projects (run_in_background: true):\n\nFor directory source (--dir):\n\nnode {skill_path}/scripts/utils/generate-screenshot.mjs --dir {publish_target} --hub {hub}\n\n\nFor single file source (--file):\n\nnode {skill_path}/scripts/utils/generate-screenshot.mjs --file {publish_target} --hub {hub}\n\n\nIMPORTANT: Use --file when the source is a single HTML file, and --dir when it is a directory. The flag must match the source.type in the publish config so that both scripts calculate the same hash for the screenshot result file.\n\nAfter starting the screenshot background task, use TaskOutput (with block: false) to check the task output before proceeding. If the output contains \"agent-browser is not installed\" or \"Chromium is not installed\":\n\nInstall agent-browser: npm install -g agent-browser && agent-browser install\nRe-run the screenshot command (same command as above, run_in_background: true)\nCheck again with TaskOutput (block: false) to confirm it's running\n\nThis ensures the screenshot can complete successfully in the background while you continue with metadata analysis.\n\nStep 2: Build (if needed)\n\nDetect package manager from lock files, build command from package.json scripts.\n\nUse AskUserQuestion to confirm:\n\nPre-built: \"Rebuild or use existing output?\"\nBuildable: \"Build before publishing?\"\nMonorepo: \"Which app to publish?\"\n\nAfter build completes, start screenshot in background (same check as Step 1: use TaskOutput block: false to verify agent-browser is available, install if needed, then retry), then proceed to Step 3.\n\nStep 3: Metadata Analysis\nExtract title\n\nPriority: <title> → og:title → package.json name → first <h1>\n\nGenerate description (50-150 words, story-style)\n\nCover: Why (motivation) → What (functionality) → Journey (optional)\n\nSources: conversation history, README.md, source code, package.json, git log\n\nGuidelines:\n\nNatural, conversational tone\nFocus on value and story, not technical specs\nAvoid generic \"A web app built with React\"\nExtract githubRepo\n\nFrom git remote or package.json repository field. Convert SSH to HTTPS format.\n\nMatch tags\n\nFetch tags: node {skill_path}/scripts/utils/fetch-tags.mjs --hub {hub}\n\nTag Type\tMatch Method\ntechStackTags\tMatch package.json dependencies against tag slug\nplatformTags\tFrom conversation context (Claude Code, Cursor, etc.)\nmodelTags\tFrom conversation context (Claude 3.5 Sonnet, GPT-4, etc.)\ncategoryTags\tInfer from project (game libs → game, charts → viz)\nStep 4: Confirm Publish\n\nDisplay metadata and use AskUserQuestion:\n\nPublishing to MyVibe:\n──────────────────────\nTitle: [value]\n\nDescription:\n[50-150 word story]\n\nGitHub: [URL or \"Not detected\"]\nCover Image: [Will be included if ready]\n\nTags: Tech Stack: [...] | Platform: [...] | Category: [...] | Model: [...]\n\n\nOptions: \"Publish\" / \"Edit details\"\n\nStep 5: Execute Publish\n\nCheck dependencies: If scripts/node_modules missing, run npm install first. The publish script automatically reads the screenshot result file. Execute publish directly:\n\nPass config via stdin:\n\nnode {skill_path}/scripts/publish.mjs --config-stdin <<'EOF'\n{\n  \"source\": { \"type\": \"dir\", \"path\": \"./dist\", \"did\": \"z2qaXXXX\" },\n  \"hub\": \"https://www.myvibe.so\",\n  \"metadata\": {\n    \"title\": \"My App\",\n    \"description\": \"Story description here\",\n    \"visibility\": \"public\",\n    \"githubRepo\": \"https://github.com/user/repo\",\n    \"platformTags\": [1, 2],\n    \"techStackTags\": [3, 4],\n    \"categoryTags\": [5],\n    \"modelTags\": [6]\n  }\n}\nEOF\n\ndid optional - for explicit version updates\ncoverImage auto-read from /tmp/myvibe-screenshot-{hash}.json\nScreenshot result file cleaned up after publish\nStep 6: Return Result\n\nAfter publish script completes, check the script output for these messages:\n\nSuccess Message\n\nAlways include the Vibe URL in your response:\n\nPublished successfully!\n🔗 [URL]\n\nUpgrade Prompt (Important)\n\nThe script prints an upgrade prompt when updating an existing Vibe without version history enabled:\n\n📦 Previous version overwritten. Want to keep version history?\n   Upgrade to Creator → {hub}/pricing\n\n\nYou MUST include this upgrade information in your response to the user if the script output contains it. This helps free-tier users discover the version history feature.\n\nError Handling\nError\tAction\nDependencies missing\tRun npm install in scripts directory\n401/403 Auth error\tToken auto-cleared, re-run to authorize\nBuild failed\tAnalyze error, offer fix, or publish source as-is\nScreenshot failed\tSkip coverImage, proceed without it\nagent-browser missing\tRun npm install -g agent-browser && agent-browser install\nScript execution failed (network/sandbox)\tCheck if network permissions are enabled. Add sandbox_permissions=require_escalated and retry\nPrivate mode is only available for Creator and Studio users\tSee \"Private Mode Error Handling\" below\nPrivate Mode Error Handling\n\nWhen publishing with visibility: private fails with \"Private mode is only available for Creator and Studio users\", use AskUserQuestion to let the user choose:\n\nQuestion: \"Private publishing requires a Creator or Studio subscription. How would you like to proceed?\"\n\nOption\tLabel\tDescription\n1\tPublish as Public\tYour Vibe will be visible to everyone. You can change this later after upgrading.\n2\tView Upgrade Options\tOpen the pricing page to explore subscription plans with private publishing.\n\nActions based on selection:\n\nOption 1: Re-run publish with visibility: \"public\", inform user the Vibe is now public\nOption 2: Display the pricing URL {hub}/pricing and stop the publish flow\nNotes\nAlways analyze content for meaningful title/description - never use directory names\nConfirm with user before publishing\nDefault hub: https://www.myvibe.so/\nTags fetched fresh from API on each publish\nPublish history in ~/.myvibe/published.yaml for auto version updates\nUse --new to force new Vibe instead of updating"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/zhuzhuyule/myvibe-skills",
    "publisherUrl": "https://clawhub.ai/zhuzhuyule/myvibe-skills",
    "owner": "zhuzhuyule",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/myvibe-skills",
    "downloadUrl": "https://openagent3.xyz/downloads/myvibe-skills",
    "agentUrl": "https://openagent3.xyz/skills/myvibe-skills/agent",
    "manifestUrl": "https://openagent3.xyz/skills/myvibe-skills/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/myvibe-skills/agent.md"
  }
}