{
  "schemaVersion": "1.0",
  "item": {
    "slug": "pulse-editor",
    "name": "Pulse Editor Vibe Coding APIs",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/Shellishack/pulse-editor",
    "canonicalUrl": "https://clawhub.ai/Shellishack/pulse-editor",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/pulse-editor",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=pulse-editor",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "examples/generate_app.py",
      "examples/generate_app.tsx"
    ],
    "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-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.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/pulse-editor"
    },
    "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/pulse-editor",
    "agentPageUrl": "https://openagent3.xyz/skills/pulse-editor/agent",
    "manifestUrl": "https://openagent3.xyz/skills/pulse-editor/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/pulse-editor/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": "Overview",
        "body": "This skill enables you to interact with the Pulse Editor Vibe Dev Flow API to generate, build, and publish Pulse Apps using cloud-based AI coding agents. The API uses Server-Sent Events (SSE) streaming to provide real-time progress updates."
      },
      {
        "title": "Why Use This Skill",
        "body": "This skill provides significant advantages for AI agents:\n\nNo Local Code Generation Required: Instead of generating code locally on the user's machine, agents can offload code generation to Pulse Editor's cloud-based vibe coding service. This eliminates the need for local build tools, dependencies, or development environments.\n\n\nBuilt-in Version Control: Every app generation is automatically versioned. Agents can update existing apps by specifying appId and version, making it easy to iterate on applications without manual version management.\n\n\nInstant Deployment: Apps are automatically built and published immediately after generation. No separate build or deploy steps needed—users get a live, working app URL as soon as generation completes.\n\n\nParallel App Generation: Agents can generate multiple apps simultaneously by making concurrent API calls. This is ideal for scenarios where an agent needs to scaffold several microservices, create multiple related applications, or batch-generate apps for different purposes—all at the same time.\n\n\nStateless & Scalable: Since all code generation happens in the cloud, agents remain lightweight and can scale horizontally without worrying about local resource constraints."
      },
      {
        "title": "Important: Long-Running Task",
        "body": "This API call is a long-running operation. The Vibe Dev Flow performs multiple steps including workspace creation, AI code generation, building, and publishing.\n\nExpected duration: Typically 2-5 minutes, but complex apps may take longer\nTimeout threshold: Do NOT time out the request unless it exceeds 10 minutes\nSSE streaming: The connection stays open throughout the process. Even if no SSE messages are received for a period, the request is NOT stalled or stuck as long as the connection remains open. Wait for the stream to end or the 10-minute timeout.\nToken efficiency: Agents should use \"streamUpdatePolicy\": \"artifactOnly\" in the request body to receive only the final artifact output, significantly reducing input tokens. But it won't count as being stuck if no messages are received for a while."
      },
      {
        "title": "When to Use This Skill",
        "body": "Use this skill when the user wants to:\n\nCreate a new Pulse App from a description or prompt\nUpdate an existing Pulse App with new features\nGenerate code for a Pulse Editor application\nBuild and publish a Pulse App"
      },
      {
        "title": "API Authentication",
        "body": "The Pulse Editor API requires an API key for authentication. Users can obtain their API key by:\n\nSigning up or logging in at https://pulse-editor.com/\nGoing to the developer section under account settings\nRequesting beta access at https://pulse-editor.com/beta (if needed)\nCreating and copying the API key from the developer section\n\nThe API key should be passed in the Authorization header as a Bearer token:\n\nAuthorization: Bearer your_api_key_here"
      },
      {
        "title": "API Endpoint",
        "body": "POST https://pulse-editor.com/api/server-function/vibe_dev_flow/latest/generate-code/v2/generate"
      },
      {
        "title": "Request Headers",
        "body": "HeaderRequiredDescriptionAuthorizationYesBearer token with Pulse Editor API keyContent-TypeYesapplication/jsonAcceptYestext/event-stream"
      },
      {
        "title": "Request Body Parameters",
        "body": "ParameterTypeRequiredDescriptionExamplepromptstringYesThe user prompt instructing the Vibe coding agent\"Create a todo app with auth and dark mode\"appNamestringNoFriendly display name for the app\"My Todo App\"appIdstringNoUnique identifier of an existing app to update. If not provided, a new app will be created\"my_app_x7k9q2\"versionstringNoVersion identifier of an existing app. If not provided, defaults to latest version\"0.0.1\"streamUpdatePolicystringNoSet to \"artifactOnly\" to receive only the final artifact output (recommended for agents to save tokens)\"artifactOnly\""
      },
      {
        "title": "Response",
        "body": "The response is a Server-Sent Events (SSE) stream. Each event contains a JSON-encoded message. Messages are separated by \\n\\n.\n\nEach SSE message is formatted as:\n\ndata: <JSON>\n\nfollowed by a blank line.\n\nMessage Types\n\nThere are two message types:\n\nCreation Message - A new message in the stream:\n\n{\n  \"messageId\": \"msg_abc123\",\n  \"type\": \"creation\",\n  \"data\": {\n    \"type\": \"text\" | \"toolCall\" | \"toolResult\" | \"artifactOutput\",\n    \"result\": \"string content\",\n    \"error\": \"error message if any\"\n  },\n  \"isFinal\": false\n}\n\nUpdate Message - Delta update to an existing message:\n\n{\n  \"messageId\": \"msg_abc123\",\n  \"type\": \"update\",\n  \"delta\": {\n    \"result\": \"additional content to append\",\n    \"error\": \"additional error to append\"\n  },\n  \"isFinal\": true\n}\n\nData Types\n\nTypeDescriptiontextText output from the agenttoolCallTool invocation by the agenttoolResultResult from a tool executionartifactOutputFinal artifact with published app info\n\nArtifact Output Format\n\nWhen the generation completes, an artifactOutput message contains:\n\n{\n  \"publishedAppLink\": \"https://pulse-editor.com/app/...\",\n  \"sourceCodeArchiveLink\": \"https://...\",\n  \"appId\": \"my_app_x7k9q2\",\n  \"version\": \"0.0.1\"\n}"
      },
      {
        "title": "Response Status Codes",
        "body": "CodeDescription200Streaming SSE with progress and final result400Bad request - invalid parameters401Unauthorized - invalid or missing API key500Server error"
      },
      {
        "title": "cURL Example",
        "body": "curl -L 'https://pulse-editor.com/api/server-function/vibe_dev_flow/latest/generate-code/v2/generate' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Accept: text/event-stream' \\\n  -H 'Authorization: Bearer your_api_key_here' \\\n  -d '{\n    \"prompt\": \"Create a todo app with auth and dark mode\",\n    \"appName\": \"My Todo App\"\n  }'"
      },
      {
        "title": "Python Example",
        "body": "import requests\nimport json\n\nurl = \"https://pulse-editor.com/api/server-function/vibe_dev_flow/latest/generate-code/v2/generate\"\n\nheaders = {\n    \"Authorization\": \"Bearer your_api_key_here\",\n    \"Content-Type\": \"application/json\",\n    \"Accept\": \"text/event-stream\"\n}\n\npayload = {\n    \"prompt\": \"Create a todo app with auth and dark mode\",\n    \"appName\": \"My Todo App\"\n}\n\nresponse = requests.post(url, json=payload, headers=headers, stream=True)\n\nmessages = {}  # Track messages by messageId\nbuffer = \"\"\n\nfor chunk in response.iter_content(chunk_size=None, decode_unicode=True):\n    buffer += chunk\n\n    # SSE messages end with \\n\\n\n    while \"\\n\\n\" in buffer:\n        part, buffer = buffer.split(\"\\n\\n\", 1)\n\n        if not part.startswith(\"data:\"):\n            continue\n\n        data = json.loads(part.replace(\"data: \", \"\", 1))\n\n        if data[\"type\"] == \"creation\":\n            messages[data[\"messageId\"]] = data\n            print(f\"New: {data['data'].get('result', '')}\")\n\n        elif data[\"type\"] == \"update\":\n            msg = messages.get(data[\"messageId\"])\n            if msg:\n                msg[\"data\"][\"result\"] = (msg[\"data\"].get(\"result\") or \"\") + (data[\"delta\"].get(\"result\") or \"\")\n                msg[\"isFinal\"] = data[\"isFinal\"]\n\n        # Check for artifact output\n        if data.get(\"data\", {}).get(\"type\") == \"artifactOutput\" and data.get(\"isFinal\"):\n            result = json.loads(messages[data[\"messageId\"]][\"data\"][\"result\"])\n            print(f\"Published: {result.get('publishedAppLink')}\")"
      },
      {
        "title": "JavaScript/Node.js Example",
        "body": "const response = await fetch(\n  \"https://pulse-editor.com/api/server-function/vibe_dev_flow/latest/generate-code/v2/generate\",\n  {\n    method: \"POST\",\n    headers: {\n      Authorization: \"Bearer your_api_key_here\",\n      \"Content-Type\": \"application/json\",\n    },\n    body: JSON.stringify({\n      prompt: \"Create a todo app with auth and dark mode\",\n      appName: \"My Todo App\",\n    }),\n  },\n);\n\nconst reader = response.body.getReader();\nconst decoder = new TextDecoder();\nlet buffer = \"\";\nconst messages = new Map();\n\nwhile (true) {\n  const { done, value } = await reader.read();\n  if (done) break;\n\n  buffer += decoder.decode(value, { stream: true });\n\n  // SSE messages end with \\n\\n\n  const parts = buffer.split(\"\\n\\n\");\n  buffer = parts.pop(); // Keep incomplete part in buffer\n\n  for (const part of parts) {\n    if (!part.startsWith(\"data:\")) continue;\n\n    const json = part.replace(/^data:\\s*/, \"\");\n    const message = JSON.parse(json);\n\n    if (message.type === \"creation\") {\n      messages.set(message.messageId, message);\n    } else if (message.type === \"update\") {\n      const msg = messages.get(message.messageId);\n      if (msg) {\n        msg.data.result =\n          (msg.data.result ?? \"\") + (message.delta.result ?? \"\");\n        msg.data.error = (msg.data.error ?? \"\") + (message.delta.error ?? \"\");\n        msg.isFinal = message.isFinal;\n      }\n    }\n\n    // Check for final artifact output\n    const msg = messages.get(message.messageId);\n    if (msg?.data.type === \"artifactOutput\" && msg.isFinal) {\n      const result = JSON.parse(msg.data.result);\n      console.log(\"Published:\", result.publishedAppLink);\n    }\n  }\n}"
      },
      {
        "title": "Updating an Existing App",
        "body": "To update an existing app, include the appId and optionally the version:\n\ncurl -L 'https://pulse-editor.com/api/server-function/vibe_dev_flow/latest/generate-code/v2/generate' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Accept: text/event-stream' \\\n  -H 'Authorization: Bearer your_api_key_here' \\\n  -d '{\n    \"prompt\": \"Add a calendar view to display tasks by date\",\n    \"appName\": \"My Todo App\",\n    \"appId\": \"my_app_x7k9q2\",\n    \"version\": \"0.0.1\"\n  }'"
      },
      {
        "title": "Updating an Existing App",
        "body": "To update an existing app, include the appId and optionally the version:\n\ncurl -L 'https://pulse-editor.com/api/server-function/vibe_dev_flow/latest/generate-code/v2/generate' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Accept: text/event-stream' \\\n  -H 'Authorization: Bearer your_api_key_here' \\\n  -d '{\n    \"prompt\": \"Add a calendar view to display tasks by date\",\n    \"appName\": \"My Todo App\",\n    \"appId\": \"my_app_x7k9q2\",\n    \"version\": \"0.0.1\"\n  }'"
      },
      {
        "title": "Best Practices",
        "body": "Clear Prompts: Provide detailed, specific prompts describing what you want the app to do\nHandle SSE Properly: Process the streaming response in real-time for progress updates\nError Handling: Implement proper error handling for 400, 401, and 500 responses\nAPI Key Security: Never hardcode API keys; use environment variables or secure storage\nVersioning: When updating apps, specify the version to ensure you're building on the correct base"
      },
      {
        "title": "Troubleshooting",
        "body": "IssueSolution401 UnauthorizedVerify your API key is correct and has beta accessNo SSE eventsEnsure Accept: text/event-stream header is setApp not updatingVerify the appId exists and you have access to it"
      },
      {
        "title": "Included Examples",
        "body": "This skill includes a ready-to-run Python example in the examples/ folder:\n\nexamples/generate_app.py - Complete Python script demonstrating SSE streaming with the Vibe Dev Flow API\nexamples/generate_app.js - Complete Node.js script demonstrating SSE streaming with the Vibe Dev Flow API\n\nTo run the example Python script:\n\n# Set your API key\nexport PULSE_EDITOR_API_KEY=your_api_key_here  # Linux/Mac\nset PULSE_EDITOR_API_KEY=your_api_key_here     # Windows\n\n# Install dependencies\npip install requests\n\n# Run the script\npython examples/generate_app.py\n\nTo run the example Node.js script:\n\n# Set your API key\nexport PULSE_EDITOR_API_KEY=your_api_key_here  # Linux/Mac\nset PULSE_EDITOR_API_KEY=your_api_key_here     # Windows\n# Install dependencies\nnpm install node-fetch\n# Run the script\nnode examples/generate_app.js"
      },
      {
        "title": "Resources",
        "body": "Pulse Editor Documentation\nAPI Reference\nGet API Key\nDiscord Community\nGitHub"
      }
    ],
    "body": "Overview\n\nThis skill enables you to interact with the Pulse Editor Vibe Dev Flow API to generate, build, and publish Pulse Apps using cloud-based AI coding agents. The API uses Server-Sent Events (SSE) streaming to provide real-time progress updates.\n\nWhy Use This Skill\n\nThis skill provides significant advantages for AI agents:\n\nNo Local Code Generation Required: Instead of generating code locally on the user's machine, agents can offload code generation to Pulse Editor's cloud-based vibe coding service. This eliminates the need for local build tools, dependencies, or development environments.\n\nBuilt-in Version Control: Every app generation is automatically versioned. Agents can update existing apps by specifying appId and version, making it easy to iterate on applications without manual version management.\n\nInstant Deployment: Apps are automatically built and published immediately after generation. No separate build or deploy steps needed—users get a live, working app URL as soon as generation completes.\n\nParallel App Generation: Agents can generate multiple apps simultaneously by making concurrent API calls. This is ideal for scenarios where an agent needs to scaffold several microservices, create multiple related applications, or batch-generate apps for different purposes—all at the same time.\n\nStateless & Scalable: Since all code generation happens in the cloud, agents remain lightweight and can scale horizontally without worrying about local resource constraints.\n\nImportant: Long-Running Task\n\nThis API call is a long-running operation. The Vibe Dev Flow performs multiple steps including workspace creation, AI code generation, building, and publishing.\n\nExpected duration: Typically 2-5 minutes, but complex apps may take longer\nTimeout threshold: Do NOT time out the request unless it exceeds 10 minutes\nSSE streaming: The connection stays open throughout the process. Even if no SSE messages are received for a period, the request is NOT stalled or stuck as long as the connection remains open. Wait for the stream to end or the 10-minute timeout.\nToken efficiency: Agents should use \"streamUpdatePolicy\": \"artifactOnly\" in the request body to receive only the final artifact output, significantly reducing input tokens. But it won't count as being stuck if no messages are received for a while.\nWhen to Use This Skill\n\nUse this skill when the user wants to:\n\nCreate a new Pulse App from a description or prompt\nUpdate an existing Pulse App with new features\nGenerate code for a Pulse Editor application\nBuild and publish a Pulse App\nAPI Authentication\n\nThe Pulse Editor API requires an API key for authentication. Users can obtain their API key by:\n\nSigning up or logging in at https://pulse-editor.com/\nGoing to the developer section under account settings\nRequesting beta access at https://pulse-editor.com/beta (if needed)\nCreating and copying the API key from the developer section\n\nThe API key should be passed in the Authorization header as a Bearer token:\n\nAuthorization: Bearer your_api_key_here\n\nAPI Endpoint\n\nPOST https://pulse-editor.com/api/server-function/vibe_dev_flow/latest/generate-code/v2/generate\n\nRequest Headers\nHeader\tRequired\tDescription\nAuthorization\tYes\tBearer token with Pulse Editor API key\nContent-Type\tYes\tapplication/json\nAccept\tYes\ttext/event-stream\nRequest Body Parameters\nParameter\tType\tRequired\tDescription\tExample\nprompt\tstring\tYes\tThe user prompt instructing the Vibe coding agent\t\"Create a todo app with auth and dark mode\"\nappName\tstring\tNo\tFriendly display name for the app\t\"My Todo App\"\nappId\tstring\tNo\tUnique identifier of an existing app to update. If not provided, a new app will be created\t\"my_app_x7k9q2\"\nversion\tstring\tNo\tVersion identifier of an existing app. If not provided, defaults to latest version\t\"0.0.1\"\nstreamUpdatePolicy\tstring\tNo\tSet to \"artifactOnly\" to receive only the final artifact output (recommended for agents to save tokens)\t\"artifactOnly\"\nResponse\n\nThe response is a Server-Sent Events (SSE) stream. Each event contains a JSON-encoded message. Messages are separated by \\n\\n.\n\nEach SSE message is formatted as:\n\ndata: <JSON>\n\n\nfollowed by a blank line.\n\nMessage Types\n\nThere are two message types:\n\nCreation Message - A new message in the stream:\n\n{\n  \"messageId\": \"msg_abc123\",\n  \"type\": \"creation\",\n  \"data\": {\n    \"type\": \"text\" | \"toolCall\" | \"toolResult\" | \"artifactOutput\",\n    \"result\": \"string content\",\n    \"error\": \"error message if any\"\n  },\n  \"isFinal\": false\n}\n\n\nUpdate Message - Delta update to an existing message:\n\n{\n  \"messageId\": \"msg_abc123\",\n  \"type\": \"update\",\n  \"delta\": {\n    \"result\": \"additional content to append\",\n    \"error\": \"additional error to append\"\n  },\n  \"isFinal\": true\n}\n\nData Types\nType\tDescription\ntext\tText output from the agent\ntoolCall\tTool invocation by the agent\ntoolResult\tResult from a tool execution\nartifactOutput\tFinal artifact with published app info\nArtifact Output Format\n\nWhen the generation completes, an artifactOutput message contains:\n\n{\n  \"publishedAppLink\": \"https://pulse-editor.com/app/...\",\n  \"sourceCodeArchiveLink\": \"https://...\",\n  \"appId\": \"my_app_x7k9q2\",\n  \"version\": \"0.0.1\"\n}\n\nResponse Status Codes\nCode\tDescription\n200\tStreaming SSE with progress and final result\n400\tBad request - invalid parameters\n401\tUnauthorized - invalid or missing API key\n500\tServer error\nExample Usage\ncURL Example\ncurl -L 'https://pulse-editor.com/api/server-function/vibe_dev_flow/latest/generate-code/v2/generate' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Accept: text/event-stream' \\\n  -H 'Authorization: Bearer your_api_key_here' \\\n  -d '{\n    \"prompt\": \"Create a todo app with auth and dark mode\",\n    \"appName\": \"My Todo App\"\n  }'\n\nPython Example\nimport requests\nimport json\n\nurl = \"https://pulse-editor.com/api/server-function/vibe_dev_flow/latest/generate-code/v2/generate\"\n\nheaders = {\n    \"Authorization\": \"Bearer your_api_key_here\",\n    \"Content-Type\": \"application/json\",\n    \"Accept\": \"text/event-stream\"\n}\n\npayload = {\n    \"prompt\": \"Create a todo app with auth and dark mode\",\n    \"appName\": \"My Todo App\"\n}\n\nresponse = requests.post(url, json=payload, headers=headers, stream=True)\n\nmessages = {}  # Track messages by messageId\nbuffer = \"\"\n\nfor chunk in response.iter_content(chunk_size=None, decode_unicode=True):\n    buffer += chunk\n\n    # SSE messages end with \\n\\n\n    while \"\\n\\n\" in buffer:\n        part, buffer = buffer.split(\"\\n\\n\", 1)\n\n        if not part.startswith(\"data:\"):\n            continue\n\n        data = json.loads(part.replace(\"data: \", \"\", 1))\n\n        if data[\"type\"] == \"creation\":\n            messages[data[\"messageId\"]] = data\n            print(f\"New: {data['data'].get('result', '')}\")\n\n        elif data[\"type\"] == \"update\":\n            msg = messages.get(data[\"messageId\"])\n            if msg:\n                msg[\"data\"][\"result\"] = (msg[\"data\"].get(\"result\") or \"\") + (data[\"delta\"].get(\"result\") or \"\")\n                msg[\"isFinal\"] = data[\"isFinal\"]\n\n        # Check for artifact output\n        if data.get(\"data\", {}).get(\"type\") == \"artifactOutput\" and data.get(\"isFinal\"):\n            result = json.loads(messages[data[\"messageId\"]][\"data\"][\"result\"])\n            print(f\"Published: {result.get('publishedAppLink')}\")\n\nJavaScript/Node.js Example\nconst response = await fetch(\n  \"https://pulse-editor.com/api/server-function/vibe_dev_flow/latest/generate-code/v2/generate\",\n  {\n    method: \"POST\",\n    headers: {\n      Authorization: \"Bearer your_api_key_here\",\n      \"Content-Type\": \"application/json\",\n    },\n    body: JSON.stringify({\n      prompt: \"Create a todo app with auth and dark mode\",\n      appName: \"My Todo App\",\n    }),\n  },\n);\n\nconst reader = response.body.getReader();\nconst decoder = new TextDecoder();\nlet buffer = \"\";\nconst messages = new Map();\n\nwhile (true) {\n  const { done, value } = await reader.read();\n  if (done) break;\n\n  buffer += decoder.decode(value, { stream: true });\n\n  // SSE messages end with \\n\\n\n  const parts = buffer.split(\"\\n\\n\");\n  buffer = parts.pop(); // Keep incomplete part in buffer\n\n  for (const part of parts) {\n    if (!part.startsWith(\"data:\")) continue;\n\n    const json = part.replace(/^data:\\s*/, \"\");\n    const message = JSON.parse(json);\n\n    if (message.type === \"creation\") {\n      messages.set(message.messageId, message);\n    } else if (message.type === \"update\") {\n      const msg = messages.get(message.messageId);\n      if (msg) {\n        msg.data.result =\n          (msg.data.result ?? \"\") + (message.delta.result ?? \"\");\n        msg.data.error = (msg.data.error ?? \"\") + (message.delta.error ?? \"\");\n        msg.isFinal = message.isFinal;\n      }\n    }\n\n    // Check for final artifact output\n    const msg = messages.get(message.messageId);\n    if (msg?.data.type === \"artifactOutput\" && msg.isFinal) {\n      const result = JSON.parse(msg.data.result);\n      console.log(\"Published:\", result.publishedAppLink);\n    }\n  }\n}\n\nUpdating an Existing App\n\nTo update an existing app, include the appId and optionally the version:\n\ncurl -L 'https://pulse-editor.com/api/server-function/vibe_dev_flow/latest/generate-code/v2/generate' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Accept: text/event-stream' \\\n  -H 'Authorization: Bearer your_api_key_here' \\\n  -d '{\n    \"prompt\": \"Add a calendar view to display tasks by date\",\n    \"appName\": \"My Todo App\",\n    \"appId\": \"my_app_x7k9q2\",\n    \"version\": \"0.0.1\"\n  }'\n\nUpdating an Existing App\n\nTo update an existing app, include the appId and optionally the version:\n\ncurl -L 'https://pulse-editor.com/api/server-function/vibe_dev_flow/latest/generate-code/v2/generate' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Accept: text/event-stream' \\\n  -H 'Authorization: Bearer your_api_key_here' \\\n  -d '{\n    \"prompt\": \"Add a calendar view to display tasks by date\",\n    \"appName\": \"My Todo App\",\n    \"appId\": \"my_app_x7k9q2\",\n    \"version\": \"0.0.1\"\n  }'\n\nBest Practices\nClear Prompts: Provide detailed, specific prompts describing what you want the app to do\nHandle SSE Properly: Process the streaming response in real-time for progress updates\nError Handling: Implement proper error handling for 400, 401, and 500 responses\nAPI Key Security: Never hardcode API keys; use environment variables or secure storage\nVersioning: When updating apps, specify the version to ensure you're building on the correct base\nTroubleshooting\nIssue\tSolution\n401 Unauthorized\tVerify your API key is correct and has beta access\nNo SSE events\tEnsure Accept: text/event-stream header is set\nApp not updating\tVerify the appId exists and you have access to it\nIncluded Examples\n\nThis skill includes a ready-to-run Python example in the examples/ folder:\n\nexamples/generate_app.py - Complete Python script demonstrating SSE streaming with the Vibe Dev Flow API\nexamples/generate_app.js - Complete Node.js script demonstrating SSE streaming with the Vibe Dev Flow API\n\nTo run the example Python script:\n\n# Set your API key\nexport PULSE_EDITOR_API_KEY=your_api_key_here  # Linux/Mac\nset PULSE_EDITOR_API_KEY=your_api_key_here     # Windows\n\n# Install dependencies\npip install requests\n\n# Run the script\npython examples/generate_app.py\n\n\nTo run the example Node.js script:\n\n# Set your API key\nexport PULSE_EDITOR_API_KEY=your_api_key_here  # Linux/Mac\nset PULSE_EDITOR_API_KEY=your_api_key_here     # Windows\n# Install dependencies\nnpm install node-fetch\n# Run the script\nnode examples/generate_app.js\n\nResources\nPulse Editor Documentation\nAPI Reference\nGet API Key\nDiscord Community\nGitHub"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Shellishack/pulse-editor",
    "publisherUrl": "https://clawhub.ai/Shellishack/pulse-editor",
    "owner": "Shellishack",
    "version": "1.0.3",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/pulse-editor",
    "downloadUrl": "https://openagent3.xyz/downloads/pulse-editor",
    "agentUrl": "https://openagent3.xyz/skills/pulse-editor/agent",
    "manifestUrl": "https://openagent3.xyz/skills/pulse-editor/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/pulse-editor/agent.md"
  }
}