Files
gstack/openclaw/skills/gstack-bridge/SKILL.md
Garry Tan 5eed270191 feat: gstack-bridge skill — teaches OpenClaw the dispatch protocol
SKILL.md for OpenClaw agents that covers the full integration: dispatch
file creation, completion report parsing, handoff reading with
resume_prompt, activity timeline queries, learnings sync, and daemon
management. Ships to ClawHub alongside other gstack skills.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 22:13:26 -07:00

4.8 KiB

name, description, version, min_openclaw_version, min_gstack_version, triggers, metadata
name description version min_openclaw_version min_gstack_version triggers metadata
gstack-bridge Bridge between OpenClaw and gstack (Claude Code). Dispatch coding tasks, read completion reports, parse handoffs, query activity timelines, and manage shared learnings. Install this to make your OpenClaw agent gstack-aware. 0.15.7.0 1.8.0 0.15.7.0
dispatch coding task
what did I ship
continue the coding work
gstack status
check coding progress
openclaw
requires
bins
claude
gh
git

gstack Bridge — Cross-Runtime Integration

You are the bridge between OpenClaw and gstack. Your job is to dispatch coding tasks to Claude Code sessions running gstack, read results, manage handoffs, and keep shared memory in sync.

Dispatch Protocol

To dispatch a coding task to gstack:

  1. Create a dispatch file at ~/.gstack/dispatch/dispatch-{timestamp}-{slug}.json:
{
  "id": "dispatch-{timestamp}-{slug}",
  "dispatched_by": "{your agent name}",
  "task": "{description of the coding task}",
  "project": "{project name}",
  "project_dir": "~/path/to/project",
  "target_agent": "claude",
  "learnings": [],
  "constraints": [],
  "callback_url": "{clawvisor callback URL, or omit for local-only}",
  "ttl_seconds": 3600
}
  1. Populate learnings with relevant context from your memory. Search for project-specific patterns: read ~/.gstack/projects/{slug}/learnings.jsonl

  2. The gstack dispatch daemon picks up the file, validates it, and spawns a Claude Code session with gstack loaded.

  3. Monitor progress: check ~/.gstack/dispatch/.daemon-heartbeat for daemon status. The heartbeat JSON contains active, queued, and pid.

  4. Results appear at ~/.gstack/dispatch/completed/{dispatch-id}.json with status, duration, and any errors.

Reading Completion Reports

Completion reports are JSON with these fields:

  • dispatch_id: matches the dispatch file ID
  • status: "completed", "failed", "cancelled", or "timeout"
  • duration: seconds elapsed
  • error: present only on failure (first 500 chars of stderr)
  • error_type: "rate_limit", "context_overflow", "tool_failure", "logic_error", or "timeout"
  • retry_count: how many retries were attempted (0 or 1)

When reporting results to the user, summarize: what shipped, decisions made, and any items flagged as "needs human judgment."

Handoff Reading

When the user says "continue the work" or "pick up where I left off":

  1. Check ~/.gstack/handoff/ for the most recent handoff file
  2. Read the resume_prompt field from the YAML frontmatter
  3. Pass the resume_prompt directly to a new Claude Code session:
    claude --print --permission-mode acceptEdits --project {project_dir} "{resume_prompt}"
    

The resume_prompt contains everything needed to reconstruct context. Don't add or modify it. Just pass it through.

Activity Timeline Queries

When the user asks "what did I ship this week" or "coding activity":

  1. Read the current week's activity file: ~/.gstack/activity/activity-{YYYY}-W{NN}.jsonl
  2. Each line is a JSON object with: ts, project, skill, artifacts, duration, dispatch
  3. Summarize: projects worked on, skills used, total duration, dispatched vs manual
  4. For cross-week queries, read multiple weekly files

Learnings Sync

gstack writes learnings to ~/.gstack/projects/{slug}/learnings.jsonl AND ~/.openclaw/workspace/memory/gstack-{slug}.md (when ~/.openclaw/ exists).

You can read either format. The markdown files are easier to scan. The JSONL files have structured data (confidence scores, types, timestamps).

When you learn something relevant to a coding project, write it to ~/.openclaw/workspace/memory/ so gstack can pick it up in the next session.

Daemon Management

Check if the daemon is running:

cat ~/.gstack/dispatch/.daemon-heartbeat 2>/dev/null

Start the daemon:

~/.gstack/skills/gstack/bin/gstack-dispatch-daemon &

The daemon handles concurrency (default 2 parallel sessions), TTL enforcement, smart retry (rate_limit and tool_failure get one retry), and audit logging.

Error Handling

If the daemon is not running (no heartbeat or stale heartbeat):

  • Tell the user: "The gstack dispatch daemon isn't running. Start it with: gstack-dispatch-daemon &"
  • Offer to write the dispatch file anyway (it will be picked up when the daemon starts)

If a dispatch fails:

  • Read the error_type from the completion report
  • rate_limit: "Rate limited by Anthropic. The daemon already retried once. Try again in a few minutes."
  • context_overflow: "The task was too large for Claude's context. Try breaking it into smaller pieces."
  • logic_error: "Claude couldn't complete this task. You may need to rephrase or provide more context."
  • timeout: "The session exceeded the time limit. Consider a shorter TTL or simpler task."