skills/lambda-workflow/SKILL.md
One lifecycle for Lambda repos: choose a br issue, start work, land the PR, and watch GitHub via Dumbwaiter MCP until it merges.
npx skillsauth add lambdamechanic/tooltest lambda-workflowInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.
tools
Use when running tooltest to validate MCP servers, interpret failures, and iterate fixes in this repo.
development
Testing patterns and standards for this codebase, including async effects, fakes vs mocks, and property-based testing.
development
Pragmatic Rust conventions to keep code readable, testable, and performant for this project.
testing
how to approach tests, types and coverage