Opencode-config-backup lobster
install
source · Clone the upstream repo
git clone https://github.com/jieni777/opencode-config-backup
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jieni777/opencode-config-backup "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/lobster" ~/.claude/skills/jieni777-opencode-config-backup-lobster && rm -rf "$T"
manifest:
skills/lobster/SKILL.mdsource content
Lobster
Contribute: Source code & PRs welcome at github.com/guwidoe/lobster-skill
Workflow runtime for AI agents — typed pipelines with approval gates.
CLI Location
# Set alias (adjust path to your install location) LOBSTER="node /home/molt/clawd/tools/lobster/bin/lobster.js" # Or install globally: npm install -g @clawdbot/lobster # Then use: lobster '<pipeline>'
Quick Reference
# Run pipeline (human mode - pretty output) $LOBSTER '<pipeline>' # Run pipeline (tool mode - JSON envelope for integration) $LOBSTER run --mode tool '<pipeline>' # Run workflow file $LOBSTER run path/to/workflow.lobster # Resume after approval $LOBSTER resume --token "<token>" --approve yes|no # List commands/workflows $LOBSTER commands.list $LOBSTER workflows.list
Core Commands
| Command | Purpose |
|---|---|
| Run shell, parse stdout as JSON |
| Filter objects |
| Project fields |
| Take first N items |
| Sort items |
| Group by key |
| Remove duplicates |
| Transform items |
| Render templates |
| Halt for approval |
| Compare to last run (stateful) |
/ | Read/write persistent state |
/ | Render output |
Built-in Workflows
# Monitor PR for changes (stateful - remembers last state) $LOBSTER "workflows.run --name github.pr.monitor --args-json '{\"repo\":\"owner/repo\",\"pr\":123}'" # Monitor PR and emit message only on change $LOBSTER "workflows.run --name github.pr.monitor.notify --args-json '{\"repo\":\"owner/repo\",\"pr\":123}'"
Approval Flow (Tool Mode)
When a pipeline hits
approve, it returns:
{ "status": "needs_approval", "requiresApproval": { "prompt": "Send 3 emails?", "items": [...], "resumeToken": "eyJ..." } }
To continue:
$LOBSTER resume --token "eyJ..." --approve yes
Example Pipelines
# List recent PRs, filter merged, show as table $LOBSTER 'exec --json --shell "gh pr list --repo owner/repo --json number,title,state --limit 20" | where "state=MERGED" | table' # Get data, require approval, then process $LOBSTER run --mode tool 'exec --json --shell "echo [{\"id\":1},{\"id\":2}]" | approve --prompt "Process these?" | pick id | json' # Diff against last run (only emit on change) $LOBSTER 'exec --json --shell "gh pr view 123 --repo o/r --json state,title" | diff.last --key "pr:o/r#123" | json'
Workflow Files (.lobster)
YAML/JSON files with steps, conditions, and approval gates:
name: pr-review-reminder steps: - id: fetch command: gh pr list --repo ${repo} --json number,title,reviewDecision - id: filter command: jq '[.[] | select(.reviewDecision == "")]' stdin: $fetch.stdout - id: notify command: echo "PRs needing review:" && cat stdin: $filter.stdout approval: required
Run:
$LOBSTER run workflow.lobster --args-json '{"repo":"owner/repo"}'
Clawdbot Integration
Lobster can call Clawdbot tools via
clawd.invoke:
$LOBSTER 'clawd.invoke --tool message --action send --args-json "{\"target\":\"123\",\"message\":\"hello\"}"'
Requires
CLAWD_URL and CLAWD_TOKEN environment variables.
State Directory
Lobster stores state in
~/.lobster/state/ by default. Override with LOBSTER_STATE_DIR.