pulse-editorGenerate and build Pulse Apps using the Vibe Dev Flow API. Use this skill when the user wants to create, update, or generate code for Pulse Editor applications.
Install via ClawdBot CLI:
clawdbot install Shellishack/pulse-editorThis 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.
This skill provides significant advantages for AI agents:
appId and version, making it easy to iterate on applications without manual version management.This API call is a long-running operation. The Vibe Dev Flow performs multiple steps including workspace creation, AI code generation, building, and publishing.
"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.Use this skill when the user wants to:
The Pulse Editor API requires an API key for authentication. Users can obtain their API key by:
The API key should be passed in the Authorization header as a Bearer token:
```
Authorization: Bearer your_api_key_here
```
POST https://pulse-editor.com/api/server-function/vibe_dev_flow/latest/generate-code/v2/generate
| Header | Required | Description |
| --------------- | -------- | -------------------------------------- |
| Authorization | Yes | Bearer token with Pulse Editor API key |
| Content-Type | Yes | application/json |
| Accept | Yes | text/event-stream |
| Parameter | Type | Required | Description | Example |
| --------- | ------ | -------- | ------------------------------------------------------------------------------------------ | --------------------------------------------- |
| prompt | string | Yes | The user prompt instructing the Vibe coding agent | "Create a todo app with auth and dark mode" |
| appName | string | No | Friendly display name for the app | "My Todo App" |
| appId | string | No | Unique identifier of an existing app to update. If not provided, a new app will be created | "my_app_x7k9q2" |
| version | string | No | Version identifier of an existing app. If not provided, defaults to latest version | "0.0.1" |
| streamUpdatePolicy | string | No | Set to "artifactOnly" to receive only the final artifact output (recommended for agents to save tokens) | "artifactOnly" |
The response is a Server-Sent Events (SSE) stream. Each event contains a JSON-encoded message. Messages are separated by \n\n.
Each SSE message is formatted as:
```
data:
```
followed by a blank line.
There are two message types:
Creation Message - A new message in the stream:
```json
{
"messageId": "msg_abc123",
"type": "creation",
"data": {
"type": "text" | "toolCall" | "toolResult" | "artifactOutput",
"result": "string content",
"error": "error message if any"
},
"isFinal": false
}
```
Update Message - Delta update to an existing message:
```json
{
"messageId": "msg_abc123",
"type": "update",
"delta": {
"result": "additional content to append",
"error": "additional error to append"
},
"isFinal": true
}
```
| Type | Description |
| ----------------- | -------------------------------------- |
| text | Text output from the agent |
| toolCall | Tool invocation by the agent |
| toolResult | Result from a tool execution |
| artifactOutput | Final artifact with published app info |
When the generation completes, an artifactOutput message contains:
```json
{
"publishedAppLink": "https://pulse-editor.com/app/...",
"sourceCodeArchiveLink": "https://...",
"appId": "my_app_x7k9q2",
"version": "0.0.1"
}
```
| Code | Description |
| ---- | -------------------------------------------- |
| 200 | Streaming SSE with progress and final result |
| 400 | Bad request - invalid parameters |
| 401 | Unauthorized - invalid or missing API key |
| 500 | Server error |
```bash
curl -L 'https://pulse-editor.com/api/server-function/vibe_dev_flow/latest/generate-code/v2/generate' \
-H 'Content-Type: application/json' \
-H 'Accept: text/event-stream' \
-H 'Authorization: Bearer your_api_key_here' \
-d '{
"prompt": "Create a todo app with auth and dark mode",
"appName": "My Todo App"
}'
```
```python
import requests
import json
url = "https://pulse-editor.com/api/server-function/vibe_dev_flow/latest/generate-code/v2/generate"
headers = {
"Authorization": "Bearer your_api_key_here",
"Content-Type": "application/json",
"Accept": "text/event-stream"
}
payload = {
"prompt": "Create a todo app with auth and dark mode",
"appName": "My Todo App"
}
response = requests.post(url, json=payload, headers=headers, stream=True)
messages = {} # Track messages by messageId
buffer = ""
for chunk in response.iter_content(chunk_size=None, decode_unicode=True):
buffer += chunk
# SSE messages end with \n\n
while "\n\n" in buffer:
part, buffer = buffer.split("\n\n", 1)
if not part.startswith("data:"):
continue
data = json.loads(part.replace("data: ", "", 1))
if data["type"] == "creation":
messages[data["messageId"]] = data
print(f"New: {data['data'].get('result', '')}")
elif data["type"] == "update":
msg = messages.get(data["messageId"])
if msg:
msg["data"]["result"] = (msg["data"].get("result") or "") + (data["delta"].get("result") or "")
msg["isFinal"] = data["isFinal"]
# Check for artifact output
if data.get("data", {}).get("type") == "artifactOutput" and data.get("isFinal"):
result = json.loads(messages[data["messageId"]]["data"]["result"])
print(f"Published: {result.get('publishedAppLink')}")
```
```javascript
const response = await fetch(
"https://pulse-editor.com/api/server-function/vibe_dev_flow/latest/generate-code/v2/generate",
{
method: "POST",
headers: {
Authorization: "Bearer your_api_key_here",
"Content-Type": "application/json",
},
body: JSON.stringify({
prompt: "Create a todo app with auth and dark mode",
appName: "My Todo App",
}),
},
);
const reader = response.body.getReader();
const decoder = new TextDecoder();
let buffer = "";
const messages = new Map();
while (true) {
const { done, value } = await reader.read();
if (done) break;
buffer += decoder.decode(value, { stream: true });
// SSE messages end with \n\n
const parts = buffer.split("\n\n");
buffer = parts.pop(); // Keep incomplete part in buffer
for (const part of parts) {
if (!part.startsWith("data:")) continue;
const json = part.replace(/^data:\s*/, "");
const message = JSON.parse(json);
if (message.type === "creation") {
messages.set(message.messageId, message);
} else if (message.type === "update") {
const msg = messages.get(message.messageId);
if (msg) {
msg.data.result =
(msg.data.result ?? "") + (message.delta.result ?? "");
msg.data.error = (msg.data.error ?? "") + (message.delta.error ?? "");
msg.isFinal = message.isFinal;
}
}
// Check for final artifact output
const msg = messages.get(message.messageId);
if (msg?.data.type === "artifactOutput" && msg.isFinal) {
const result = JSON.parse(msg.data.result);
console.log("Published:", result.publishedAppLink);
}
}
}
```
To update an existing app, include the appId and optionally the version:
```bash
curl -L 'https://pulse-editor.com/api/server-function/vibe_dev_flow/latest/generate-code/v2/generate' \
-H 'Content-Type: application/json' \
-H 'Accept: text/event-stream' \
-H 'Authorization: Bearer your_api_key_here' \
-d '{
"prompt": "Add a calendar view to display tasks by date",
"appName": "My Todo App",
"appId": "my_app_x7k9q2",
"version": "0.0.1"
}'
```
To update an existing app, include the appId and optionally the version:
```bash
curl -L 'https://pulse-editor.com/api/server-function/vibe_dev_flow/latest/generate-code/v2/generate' \
-H 'Content-Type: application/json' \
-H 'Accept: text/event-stream' \
-H 'Authorization: Bearer your_api_key_here' \
-d '{
"prompt": "Add a calendar view to display tasks by date",
"appName": "My Todo App",
"appId": "my_app_x7k9q2",
"version": "0.0.1"
}'
```
| Issue | Solution |
| ---------------- | --------------------------------------------------- |
| 401 Unauthorized | Verify your API key is correct and has beta access |
| No SSE events | Ensure Accept: text/event-stream header is set |
| App not updating | Verify the appId exists and you have access to it |
This skill includes a ready-to-run Python example in the examples/ folder:
examples/generate_app.py - Complete Python script demonstrating SSE streaming with the Vibe Dev Flow APIexamples/generate_app.js - Complete Node.js script demonstrating SSE streaming with the Vibe Dev Flow APITo run the example Python script:
```bash
export PULSE_EDITOR_API_KEY=your_api_key_here # Linux/Mac
set PULSE_EDITOR_API_KEY=your_api_key_here # Windows
pip install requests
python examples/generate_app.py
```
To run the example Node.js script:
```bash
export PULSE_EDITOR_API_KEY=your_api_key_here # Linux/Mac
set PULSE_EDITOR_API_KEY=your_api_key_here # Windows
npm install node-fetch
node examples/generate_app.js
```
Generated Mar 1, 2026
Startups can quickly generate functional app prototypes from idea descriptions to validate concepts with users or investors. This accelerates MVP development without needing dedicated developers or local setup, allowing teams to iterate based on feedback by updating existing apps.
Educators or edtech companies can create interactive learning apps for specific subjects, such as quiz generators or coding tutorials, by providing prompts. It enables rapid deployment of customized educational tools for classrooms or online platforms without coding expertise.
Enterprises can generate apps to automate routine tasks like inventory tracking, employee onboarding forms, or data dashboards. By offloading code generation to the cloud, IT teams can focus on integration while scaling app creation across departments without local resource constraints.
Marketing agencies can quickly build and publish promotional microsites or landing pages for campaigns by describing features like contact forms or product showcases. Parallel generation allows creating multiple related sites simultaneously for different clients or events.
Agencies can offer app development as a service using this skill to generate custom apps for clients on-demand. Revenue comes from subscription tiers based on app volume or features, leveraging the API's scalability and instant deployment to reduce turnaround time.
Freelancers can use this skill to quickly deliver app projects to clients, charging per app or on a retainer basis. It eliminates local development overhead, allowing them to handle more projects simultaneously and focus on client customization rather than coding from scratch.
Large organizations can integrate this skill into their internal platforms to enable non-technical employees to create apps for departmental needs. Revenue is generated through cost savings on external developers and increased operational efficiency from automated app generation.
💬 Integration Tip
Use the artifactOnly stream policy to minimize token usage, and ensure API key authentication is set up in headers for seamless cloud-based generation.
Write persuasive copy for landing pages, emails, ads, sales pages, and marketing materials. Use when you need to write headlines, CTAs, product descriptions, ad copy, email sequences, or any text meant to drive action. Covers copywriting formulas (AIDA, PAS, FAB), headline writing, emotional triggers, objection handling in copy, and A/B testing. Trigger on "write copy", "copywriting", "landing page copy", "headline", "write a sales page", "ad copy", "email copy", "persuasive writing", "how to write [marketing text]".
Write compelling UX copy, marketing content, and product messaging. Use when writing button labels, error messages, landing pages, emails, CTAs, empty states, tooltips, or any user-facing text.
Use when you have a spec or requirements for a multi-step task, before touching code
You are a Writing Team Lead managing specialized writers via MCP tools. Please ANALYZE the writing task and then:1. if exist references, create a detailed co...
Creates high-quality, SEO-optimized content that ranks in search engines. Applies on-page SEO best practices, keyword optimization, and content structure for...
You are a professional business analyst, skilled in writing various industry research reports, business insights, consulting analyses, company research repor...