lambda-workflow
One lifecycle for Lambda repos: choose a br issue, start work, land the PR, and watch GitHub via Dumbwaiter MCP until it merges.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
One lifecycle for Lambda repos: choose a br issue, start work, land the PR, and watch GitHub via Dumbwaiter MCP until it merges.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Use when running tooltest to validate MCP servers, interpret failures, and iterate fixes in this repo.
Migrate docs from bd (beads) to br (beads_rust). Use when updating AGENTS.md, converting bd commands, "bd sync" → "br sync --flush-only", or beads migration.
Git-backed issue tracker for multi-session work with dependencies and persistent memory across conversation compaction. Use when work spans sessions, has blockers, or needs context recovery after compaction.
Testing patterns and standards for this codebase, including async effects, fakes vs mocks, and property-based testing.
how to approach tests, types and coverage
Pragmatic Rust conventions to keep code readable, testable, and performant for this project.
| name | lambda-workflow |
| description | One lifecycle for Lambda repos: choose a br issue, start work, land the PR, and watch GitHub via Dumbwaiter MCP until it merges. |
Use this skill whenever you touch delivery end-to-end - from grabbing a br issue through merge/closure. Each phase builds on the last; do not skip ahead unless a human explicitly says so.
.beads/beads.db is missing (fresh clone, new worktree, etc.), run br sync --import-only --db .beads/beads.db from the repo root so the local database hydrates from .beads/issues.jsonl before listing work.beads-sync worktree is missing, recreate it with a sparse checkout of only /.beads/:
git fetch origin beads-sync:beads-sync || git branch beads-sync
git worktree add --no-checkout .git/beads-worktrees/beads-sync beads-sync
git -C .git/beads-worktrees/beads-sync sparse-checkout init --cone
git -C .git/beads-worktrees/beads-sync sparse-checkout set /.beads
git -C .git/beads-worktrees/beads-sync checkout beads-sync
br ready --json --limit 0 before asking for work; respect blockers/dependencies, pick the first ready issue and claim it. br update <id> --status in_progress --notes "Starting work on ${issue title}".bv -robot-next (or bv -robot-triage for full context). Map the selected id to br show <id> and br update <id> --status in_progress. Ignore embedded bd claim/show commands in the bv output..beads/issues.jsonl changes immediately on main and push. This avoids multiple agents pulling the same issue. If you get a conflict, revert the .beads/issues.jsonl changes, pull with rebase, and try again..beads/issues.jsonl. Again, push these changes (and only these changes) directly to main.git fetch --all and git pull --rebase origin main.main, stop and escalate instead of piling on.git checkout -b <short-task-name>). Never work directly on main.gh auth status (or equivalent) so PR automation works later.gh pr create --draft --title "..." --body-file body.md. Be wary of quoting issues, it's easy to end up with "\n" characters in the PR.git status -sb clean; commit coherent checkpoints and push often so the draft PR reflects reality. Pull and rebase over origin/main before pushing each time.proptest! or integration coverage when stateful sh loops).dbg!, println!, temporary flags) before moving to landing.Quality gates
Repo hygiene
.gitignore keeps artifacts out.main, squash/reorder into meaningful commits, and confirm no stray stashes remain (git stash list). Make sure you only squash/reorder your commits! Commits must all be rebased on top of origin/main.PR
gh pr ready once all our tests pass, and we think the acceptance criteria are met. Close the br issue now, update br notes with the PR URL, testing evidence, and any deviations from the original plan, export with br sync --flush-only, and push.@codex review; reply inline to every Codex comment with the commit hash that fixes it.Tracking
Once the PR is Ready, hand monitoring to the Dumbwaiter MCP so you don’t poll GitHub manually.
Start a wait (via MCP tools or mcp__dumbwaiter__wait.start):
{
"provider": "github",
"selector": { "owner": "ORG", "repo": "REPO", "pr": 123 },
"condition": "checks_succeeded"
}
Capture the returned wait_id.
Await completion
wait.await with that wait_id to stream progress notifications (check statuses, workflow runs, etc.).pr_merged, checks_failed, comment_received (plus filters), changes_requested, or workflow_completed.wait.status on an interval; cancel via wait.cancel if superseded.React to outcomes
wait_id back to br/PR notes.condition: "comment_received" with filters.since so every new review/comment notifies you in real time.Background durability
DUMBWAITER_DB and DUMBWAITER_WATCHER=1 if you need waits to survive process restarts. Always log the wait_id in br so another agent can resume with wait.status.pr_merged, archive local branches/stashes so the next effort starts clean.Following this workflow keeps the entire Lambda lifecycle observable: br reflects intent, GitHub shows work-in-progress via draft PRs, Ready PRs meet the landing checklist, and Dumbwaiter MCP watches the PR until it merges.