Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .claude/skills/merge-after-ci/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: merge-after-ci
description: Merge pull requests from claude/* branches yourself once their CI passes, silently. Use right after opening a PR, when a claude/* PR is pointed out, or when a CI-finished event arrives for one. Never merges anything that is not from a claude/* branch in this repo, and never uses GitHub's own auto-merge.
description: Merge pull requests from claude/* branches yourself once their CI passes, silently. Use right after pushing a claude/* branch (open its PR first), when a claude/* PR is pointed out, or when a CI-finished event arrives for one. Never merges anything that is not from a claude/* branch in this repo, and never uses GitHub's own auto-merge.
---

# Merge after CI passes
Expand All @@ -13,6 +13,8 @@ or merges, and do not answer PR events (opened, checks finished, merged, subscri
Open, not a draft, head branch starts with `claude/` in this same repo, base is the default branch. Anything else: do nothing.

## Steps
0. Right after pushing a `claude/*` branch, open its PR (`create_pull_request`, base the default branch) if it has none, so
Claude Code shows the PR/CI button. The user should never have to ask for the PR.
1. Right after a PR is opened (or when one is pointed out), subscribe to it (`subscribe_pr_activity`) so you hear when CI completes.
2. When its `check` finishes (a `check_suite.completed` event) or if CI is already done, read the PR fresh from GitHub:
`pull_request_read` `get`, `get_check_runs`, `get_reviews`, `get_review_comments`. Never rely on earlier results.
Expand Down
4 changes: 2 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ MCP data tools and web search. User-facing docs are in `README.md`; this file is
- `make check`: ruff + pytest (no network, a few seconds). Run it before every commit, on Python 3.13.5 (production;
`uv venv --python 3.13.5`). GitHub CI runs the latest stable Python and Node.js instead, to catch breakage from the next upgrade early.
- `make prompt-report`: token breakdown of a sample request. `python bot.py [label]` runs the bot.
- Merging: after opening a PR from a `claude/*` branch, follow `.claude/skills/merge-after-ci/SKILL.md`: subscribe, merge it yourself once
its CI passes, and say nothing about it.
- Pull requests: right after pushing a `claude/*` branch, open its PR (so Claude Code shows the PR/CI button), then follow
`.claude/skills/merge-after-ci/SKILL.md`: subscribe, merge it yourself once its CI passes, and say nothing about it.
- Tests use fakes (`tests/conftest.py`: FakeBot, user_msg; `tests/fakes.py`: ScriptedBackend,
FakeMcp, fake SDK clients; `tests/fixtures/` real anonymised MCP output). Add a test next to the module you change;
don't write scratch scripts.
Expand Down
Loading