본문으로 건너뛰기
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.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

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월 19일 업데이트

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월 19일 업데이트

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월 19일 업데이트

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월 19일 업데이트

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월 19일 업데이트

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월 19일 업데이트

Generous-Corp의 스킬 모두 보기

이 스킬의 문제 신고