Pulse Local Skill
Pulse runs autonomous development loops that iterate toward a goal without constant human intervention. This skill executes iterations locally via Claude Code subprocess, with iMessage notifications through Clawdbot.
Full Public Reader
---
name: bot:pulse
description: Manages Pulse autonomous development sessions with local execution via Claude Code
homepage: https://github.com/diomandeee/comp-core
user-invocable: true
command-dispatch: pulse
metadata.clawdbot: {"local_execution": true}
manifest:
inputs: [project_path, development_goal, max_iterations]
outputs: [session_id, iteration_results, commit_hashes, completion_status]
chains_with: [bot:dream-weaver, sys:plan, evo:evolve, tie:dist]
triggers: [pulse, autonomous, develop, iterate, implement, execute]
can_spawn_pulse: true
---
Pulse Local Skill
Pulse runs autonomous development loops that iterate toward a goal without constant human intervention. This skill executes iterations locally via Claude Code subprocess, with iMessage notifications through Clawdbot.
Commands
| Command | Description |
|---|---|
| `/pulse @project "goal"` | Start an autonomous Pulse session |
| `/pulse:status [id]` | Check session progress |
| `/pulse:pause <id>` | Pause a running session |
| `/pulse:resume <id>` | Resume a paused session |
| `/pulse:abort <id>` | Stop a session |
| `/pulse:list` | List recent sessions |
| `/pulse:context <id>` | View full session context |
How Pulse Works
1. User defines a development goal
2. Pulse runs iterations autonomously (up to 10 by default)
3. Each iteration: analyze -> implement -> test -> commit -> signal
4. Signals determine flow:
- `CONTINUE` - keep iterating toward goal
- `COMPLETE` - goal achieved, session ends
- `BLOCKED` - needs human input
5. User notified via iMessage after each iteration
Architecture
User (iMessage)
|
v
+-------------------------------+
| CLAWDBOT (Local Gateway) |
| +-------------------------+ |
| | PulseHandler (Python) | |
| | - Command routing | |
| | - Session management | |
| +-------------------------+ |
+-------------------------------+
|
+-------------------+
v v
+------------+ +----------------+
| Session | | Loop Runner |
| Manager | | - Direct exec |
| (JSON) | | - Subprocess |
+------------+ +----------------+
| |
v v
+------------+ +----------------+
| [home-path] | | Claude Code |
| sessions/ | | --print |
+------------+ +----------------+Starting a Session
/pulse @my-project "Add user authentication with JWT"This will:
1. Resolve project path (Desktop/my-project or similar)
2. Create session in [home-path]
3. Start background loop runner
4. Execute iterations via `claude --print` subprocess
5. Send iMessage notifications on progress
Session Notifications
After each iteration, you'll receive an iMessage:
[->] Pulse 3/10
Added JWT verification middleware and login endpointWhen complete:
[OK] Pulse Complete
Project: my-project
Iterations: 7
Commits: 5
Session abc12345 finished successfully.When blocked:
[!!] Pulse Blocked
Session: abc12345
Iteration: 4
Reason: Need database credentials
Reply to unblock or:
/pulse:abort abc12345Session Storage
Sessions are stored locally in `[home-path]`:
{
"id": "uuid",
"projectName": "my-project",
"projectPath": "/Users/.../my-project",
"goal": "Add user authentication...",
"status": "running",
"currentIteration": 3,
"maxIterations": 10,
"lastSignal": "CONTINUE",
"iterations": [...],
"progressLog": [...],
"totalCommits": 2,
"commitHashes": [...]
}Configuration
Notification settings in `[home-path]`:
{
"enabled": true,
"channel": "imessage",
"recipient": "+1234567890",
"events": {
"iteration_complete": true,
"session_complete": true,
"blocked": true,
"started": true
}
}Example Session
User: `/pulse @trajectory-search "Add fuzzy search with Levenshtein distance"`
Response:
Pulse Session Started
Session: abc12345
Project: trajectory-search
Goal: Add fuzzy search with Levenshtein distance
Max Iterations: 10
I'll notify you as each iteration completes.
Commands:
- /pulse:status - Check progress
- /pulse:pause - Pause the session
- /pulse:abort - Stop the sessioniMessage (Iteration 1):
[->] Pulse 1/10
Created levenshtein.ts with distance calculation functioniMessage (Iteration 2):
[->] Pulse 2/10
Integrated fuzzy search into search endpointiMessage (Complete):
[OK] Pulse Complete
Project: trajectory-search
Iterations: 4
Commits: 3
Session abc12345 finished successfully.Signals
Claude signals its status at the end of each iteration:
| Signal | Meaning | Result |
|---|---|---|
| `<signal>CONTINUE</signal>` | More work needed | Continue to next iteration |
| `<signal>COMPLETE</signal>` | Goal achieved | Session ends successfully |
| `<signal>BLOCKED: reason</signal>` | Cannot proceed | Session paused for input |
Differences from GCP Orchestrator
This local implementation bypasses the GCP-hosted orchestrator:
| Feature | GCP Orchestrator | Local Skill |
|---|---|---|
| Execution | Cloud Run -> inbox_tasks | Direct subprocess |
| Storage | Supabase | Local JSON files |
| Notifications | Telegram | iMessage |
| Dependencies | GCP, Supabase | None (local only) |
| Reliability | Broken (inbox not picked up) | Works |
Logs
Iteration logs stored in `[home-path]`:
- `iteration_01.txt`
- `iteration_02.txt`
- etc.
Handler logs in `[home-path]`
Promotion Decision
Attach run IDs, datasets, metrics, and reproduction commands.
Source Anchor
homelab/clawdbot/skills/bot:pulse/SKILL.md
Detected Structure
Method · Evaluation · Code Anchors · Architecture