本文へ移動
cccskills
無料GitHub で公開

pr-batching

Decide whether several finished branches ship as ONE PR or stay separate. Use when holding 2+ green branches before `shipyard pr`. Trades CI cost against revert granularity, urgency, and the diff-coverage gate.

インストール方法を見る

含まれるファイル(1)

  • SKILL.md5.1 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

PR batching

A PR costs ~an hour before it can merge: a ~25-min local diff-coverage build, then a Shipyard validation. Validations must run serially (concurrent runs from worktrees sharing one .git race on config.lock). So n related PRs is n sequential hours, not n parallel ones.

That makes "ship these together?" a real question. This is the checklist.

Default: combine

If you hold 2+ finished, green, related branches — combine. Separate PRs are what you justify, not the reverse.

Combine when

  • They share unmerged work. Check first — you may already have the combined branch:
    git merge-base --is-ancestor feature/a feature/b && echo "b already contains a"
    # siblings: is their common point AHEAD of origin/main?
    git rev-list --count origin/main..$(git merge-base feature/a feature/b)
    
    A chain is the combined PR — open it from the tip. Siblings fold with a cherry-pick.
  • One depends on the other. If B only compiles because of A, they were always one change.
  • Same subsystem. One context, one adoption note, one revert.
  • A well-tested branch would lift a weak one over the coverage gate. Coverage is computed over the whole PR diff, so folding in a densely-tested branch raises the ratio. A branch stuck at 68% can clear 75% by merging with a sibling that ships 20 test cases. This is adding covered lines, not hiding uncovered ones — legitimate.
  • Fewer chances to re-conflict the version-bump line on a busy main.

One PR per family per session

A single agent session routinely produces a run of small, related changes to one manifest or branch family on the same day. Shipped one at a time, each pays its own PR-head gate and its own merge-group gate; the merged-change average was 4.2 native gate runs per change when sessions did this. The rule:

  • Same session + same manifest or branch family + same day ⇒ one PR per family. A session with fourteen such changes ships two to four PRs, not fourteen.
  • Before running shipyard pr on the second change of a family, check whether the first is still open. If it is, and it is not yet in the merge queue, push the new commit onto that branch instead of opening a sibling PR.
  • The pre-push advisor lists the related local branches it found and records each firing in ${XDG_STATE_HOME:-~/.local/state}/pulp/pr-batch-advice.jsonl; that log is how the advice is measured.

Never fold, even inside one family:

  • anything likely to be ejected (a known-flaky area, a change to a test the queue is currently failing on) — one ejection costs every entry of the batch;
  • anything urgent, especially a fix for a red main — it ships alone and jumps;
  • a docs-only PR into one that runs the native gate, since the docs PR would then pay for a build it does not need;
  • unrelated subsystems, unfinished work, or a change that may need reverting alone (see below).

Keep separate when — any ONE of these

  • One is urgent, the other is gated. Never make a ready branch hostage to a blocked one. An hour of CI is cheaper than a day of someone else's blocked work.
  • One is unfinished — a library with no caller, an unwired command, uncommitted files. Never ship half-done work to save a CI run. This is the trade that looks tempting and is always wrong.
  • Unrelated subsystems. Costs revert granularity, muddies the migration note.
  • One is risky enough it might need reverting — isolate it, or a revert drags good work out with it.
  • One carries a large untestable surface (native window hosts, format adapters needing a real DAW). It drags combined coverage down — the inverse of the lift above. Check which way it cuts.

Folding siblings

cd <worktree-of-primary-branch>
git log --oneline <shared-base>..feature/sibling   # confirm its OWN commits
git cherry-pick <sha>...
tools/ci/governed-build.sh cmake --build build
ctest --test-dir build --output-on-failure -R '<affected>'

Cherry-picks compile and still break behaviour — a change fine against the old base can violate an invariant the other branch just introduced. Run the suites together before shipping.

Don't

  • Don't run two heavy builds at once to "save time." They contend, and the contention surfaces as test failures (shellout tests time out under load), costing you an investigation into a bug that does not exist.
  • Don't batch to dodge a gate. Adding covered lines to raise a ratio is fine. A PULP_SKIP_* bypass is not.

Enforcement

This skill is the judgment. tools/scripts/pr_batch_advisor.py runs from .githooks/pre-push (advisory, never blocks) so the question gets asked no matter who is driving — Claude, Codex, a human, gh pr create, or shipyard pr. A skill only reaches an agent that reads it; a push reaches everyone.

Silence one push: PULP_SKIP_PR_BATCH_ADVICE=1.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

aax

無料

Optional AAX support for Pulp, including developer-supplied Avid SDK setup, CMake enablement, DigiShell/AAX Validator workflows, and local AAX builds on macOS or Windows.

日本語の概要は準備中です。原文の説明を表示しています。

Generous-Corp/pulp222026年10月10日 更新

Configure, implement, and test Pulp's optional desktop Ableton Link tempo-sync adapter while preserving the developer-supplied SDK, licensing, realtime, latency-compensation, and no-install boundaries.

日本語の概要は準備中です。原文の説明を表示しています。

Generous-Corp/pulp222026年10月10日 更新

Maintain Pulp's installed design-time agent capability manifest and public-surface ledger. Use when adding, removing, renaming, or materially changing public audio, MIDI, signal, timebase, or sequence APIs; registering a new algorithm for generators; changing capability support or deprecation state; or repairing agent-capabilities freshness, schema, fingerprint, tombstone, or installed-SDK tests.

日本語の概要は準備中です。原文の説明を表示しています。

Generous-Corp/pulp222026年10月10日 更新

android

無料

Android platform development for Pulp — NDK cross-compilation, Oboe audio, Dawn/Skia GPU rendering, JNI bridge, touch interaction, emulator workflows, and end-to-end smoke validation. Covers build, deploy, debug, and the gotchas discovered during bringup.

日本語の概要は準備中です。原文の説明を表示しています。

Generous-Corp/pulp222026年10月10日 更新

ara

無料

Optional ARA support for Pulp, including developer-supplied ARA SDK setup, CMake enablement, adapter companion APIs, validation, and ARA-aware plugin implementation guidance.

日本語の概要は準備中です。原文の説明を表示しています。

Generous-Corp/pulp222026年10月10日 更新

The measurement surface for ALL Pulp DSP and audio-pipeline work — read it BEFORE writing or gating DSP, not only when something already sounds wrong. Covers the C++ harness (signal generators, metrics, assertions, RenderScenario, contracts), the offline Audio Doctor (magnitude/frequency response, THD/THD+N, phase/group delay), and their Python sibling the Audio Quality Lab (tools/audio/quality-lab — null residual + alignment, LTAS log-spectral distance, spectral flux/centroid, HNR, Theil-Sen drift slope, Kaiser-sinc resampling, license-guarded corpus, regression-net ratchet). TRIGGER on AUTHORING work — "build/design an oscillator/filter/synth/effect", "add a DSP module", "what should the acceptance gate be", "how do I measure aliasing / anti-aliasing / alias floor", "null against a reference", "is this DSP correct", "choose a tolerance", "golden/regression corpus for audio", "measure drift or jitter", "A/B two renders" — AND on DEBUGGING work — "is there sound / no audio / I hear nothing", "does this filter/compressor/synth/delay produce the right signal", "prove the DSP / prove the contract", "measure the frequency response", "what's the THD / is it distorting", "what's the group delay / phase response / measured latency", "magnitude response curve", "render a test tone and assert", "audio regression", "64-frame works but 128 is silent", "sample-rate change pitch-shifted it", "describe what's in this buffer", "audio doctor", "compare before/after a DSP refactor". Reach for this BEFORE hand-rolling any FFT, null test, alias measurement, pitch tracker, or golden-render script — most of it already exists in one of the two lanes. Test/tool layer over HeadlessHost — deterministic, no audio device, no speakers. Off the realtime thread entirely.

日本語の概要は準備中です。原文の説明を表示しています。

Generous-Corp/pulp222026年10月10日 更新

Generous-Corp のスキルをすべて見る

このスキルの問題を報告する