Loading...
Loading...
Provider-agnostic wait-for-change skill that uses the Dumbwaiter MCP server to wait on PR events (GitHub first) via wait.start/status/cancel/await, with progress notifications and durable state.
npx skill4agent add lambdamechanic/skills dumbwaiter-mcpcargo build && target/debug/dumbwaiter-mcpexport GITHUB_TOKEN=…DUMBWAITER_DB./state/dumbwaiter.sqliteDUMBWAITER_AWAIT_TTL_SECSDUMBWAITER_ENGINE=1DUMBWAITER_WATCHER=1wait_idnotify_progresswait.start{ wait_id }wait.statuspending|satisfied|failed|timeout|cancelled|unknownwait.cancelwait.await{ "owner": "ORG", "repo": "REPO", "pr": 123 }conditionchecks_succeededchecks_failedpr_mergedpr_approvedchanges_requestedworkflow_completedcomment_receivedcomment_receivedfilterssincecreated_atwait.start{ "provider": "github", "selector": {…}, "condition": "checks_succeeded" }wait_idwait.await{ "wait_id": "…" }wait.statuswait.cancelwait.awaitwait.statuswait_idtimeoutconditioncomment_received{
"provider": "github",
"selector": { "owner": "acme", "repo": "widgets", "pr": 42 },
"condition": "comment_received",
"filters": {
"since": "2025-01-01T00:00:00Z",
"include_bots": true,
"author_allowlist": ["alice"],
"author_denylist": ["bot"]
}
}wait.awaitnotify_progress{ provider: "github", selector: { owner: "acme", repo: "widgets", pr: 42 }, condition: "checks_succeeded" }{ wait_id }{ provider: "github", selector: { owner: "acme", repo: "widgets", pr: 42 }, condition: "comment_received", filters: { since: "2025-01-01T00:00:00Z", include_bots: true } }unknownwait_idGITHUB_TOKEN