Skip to content

Add PR babysitter - #1

Merged
joesaunderson merged 3 commits into
mainfrom
feat/babysit-prs
Jul 10, 2026
Merged

Add PR babysitter#1
joesaunderson merged 3 commits into
mainfrom
feat/babysit-prs

Conversation

@joesaunderson

Copy link
Copy Markdown
Owner

Personal PR-babysitter toolchain, adapted from haacked/dotfiles for the mention-me org. Designed and specced across earlier sessions; full design record in docs/pr-babysitter/ (spec, decisions, 4 ADRs, architecture diagram).

What it does

One sweep over my open mention-me PRs, and per PR: check CI, review comments, and merge conflicts, fix what it safely can in a git worktree, push, and report to Slack. Runs as an always-on launchd service (10-min interval, working-hours guard). Never merges, closes, or force-pushes.

Contents

  • Orchestrator ai/skills/babysit-prs + the tested classify-pr.sh quiet/active seam
  • Arms: ci-monitor (Linear flake sink, workflow-file limitation), address-pr-reviews (Greptile; human agree-auto / disagree-held), resolve-conflicts (merge-main-in, mechanical-safe only)
  • Agent report-flake + linear-flake.sh (dedup Linear issues, headless-safe)
  • Service worker + LaunchAgent; config.sh + two-tier install.sh/setup.sh
  • CI shellcheck + test jobs

Verification

  • TDD on the classify seam; 106 test assertions green (bin/run-tests.sh)
  • shellcheck clean at warning severity
  • Two-axis code review applied (fixed an unsafe-JSON bug + nits)

Before it runs (see docs/pr-babysitter/PREREQUISITES.md)

./install.sh then ./setup.sh (collects Slack bot token + Linear API key); create the flaky-test label in Linear team REF.

🤖 Generated with Claude Code

https://claude.ai/code/session_01HjC3rKLYTSqVqf6YG2taPc

joesaunderson and others added 3 commits July 10, 2026 10:58
Personal babysit-prs toolchain adapted from haacked/dotfiles for the
mention-me org: orchestrator + CI/reviews/conflicts arms, Linear flake
agent, worktree/slack/linear libs, launchd service, two-tier install.
TDD classify-pr seam; 106 test assertions green; shellcheck clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HjC3rKLYTSqVqf6YG2taPc
- linear-flake.sh: emit error JSON via jq (untrusted API text), dedup
  create-vars and error literals into die_json helper (H: unsafe interp)
- git-worktree.sh: fix muddled fetch redirection, silence noise correctly
- slack-notify.sh: workspace host now config-driven (BABYSIT_SLACK_WORKSPACE)
- setup.sh: write secrets with printf %q (quote-safe)
- address-pr-reviews: rename state dir copilot-review-loop -> babysit-prs/reviews
- classify-pr.sh: document ISO-8601 UTC lexicographic-compare invariant
- strip em dashes from authored skill prose; fix stale comments
- docs: correct pending-quiet wording, bin-not-symlinked, StartInterval+guard

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HjC3rKLYTSqVqf6YG2taPc
- .github/workflows/ci.yml runs shellcheck (warning severity) and the
  test suite on push to main and every PR
- bin/run-tests.sh discovers and runs all test-*.sh (shared by CI + local)
- silence intentional shellcheck warnings in vendored base libs
  (github.sh vars-for-caller, ci-helpers CI_* constants + DEBUG= prefix)
  so the repo is genuinely clean at warning severity

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HjC3rKLYTSqVqf6YG2taPc
@joesaunderson
joesaunderson marked this pull request as ready for review July 10, 2026 10:24
@joesaunderson
joesaunderson merged commit 098fab2 into main Jul 10, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant