api-pagination
Implement correct, fast API pagination — cursor vs offset trade-offs, opaque cursor encoding, stable sort keys, page-size limits, total-count costs, and…
Run git collaboration that scales — trunk-based vs git-flow decided by deploy cadence, branch protection and required checks, PR sizing and review etiquette, monorepo vs polyrepo trade-offs, release branches and hotfixes, and history hygiene with disciplined merges.
$ npx -y skills add vanara-agents/skills --skill git-collaboration-workflows --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/git-collaboration-workflowsContext preview
The summary Claude sees to decide when to auto-load this skill.
Run git collaboration that scales — trunk-based vs git-flow decided by deploy cadence, branch protection and required checks, PR sizing and review etiquette, monorepo vs polyrepo trade-offs, release branches and hotfixes, and history hygiene with disciplined merges.
name: git-collaboration-workflows description: Run git collaboration that scales — trunk-based vs git-flow decided by deploy cadence, branch protection and required checks, PR sizing and review etiquette, monorepo vs polyrepo trade-offs, release branches and hotfixes, and history hygiene with disciplined merges. type: skill version: 1.0.1 updated: 2026-07-27
Git workflow debates are proxy wars over one variable: **how often you ship**. Choose the branching model from your deploy cadence, enforce it with branch protection instead of vigilance, and keep PRs small enough to review honestly. Deep detail in `references/`; protection settings and a PR-review playbook in `examples/`; `scripts/check-branch-hygiene.mjs` audits a repo's local hygiene.
| You deploy… | Model | Shape | |---|---|---| | Continuously (SaaS default) | **Trunk-based** | Short-lived branches (<2 days) → main; release = deploy main; flags hide unfinished work | | On a cadence (mobile, desktop) | Trunk + **release branches** | Cut `release/1.24` from main; only cherry-picked fixes land on it; tag ships | | Multiple supported majors (enterprise, on-prem) | Trunk + long-lived release lines | Fix on main first, cherry-pick back (never the reverse) |
Full git-flow (develop + feature + release + hotfix branches) earns its complexity only in the third row — adopted by SaaS teams it mostly adds merge ceremony and delays integration. The deciding question is never taste; it's "what do we support in production simultaneously?"
trunk-based: main ──●──●──●──●──► release = deploy latest green main cadence: main ──●──●──●──► release/1.24 ──●(cp)──tag 1.24.1 hotfix: branch from the SHIPPED TAG, fix, tag — then forward-port to main SAME DAY
Mechanics of each and the hotfix path: `references/branching-models.md`.
Integration pain grows superlinearly with branch age — two weeks of divergence is a merge project. Working rules:
branch age < 2 days (rebase on main daily if longer is unavoidable)
PR size ≤ ~400 changed lines — review quality collapses beyond that
one PR one logical change (refactor ≠ behavior change ≠ formatting)
big features land dark in slices behind a flag (feature-flags-experimentation),
never in a long-lived feature branchStacked PRs (chain of small dependent PRs) are the escape hatch when a change is genuinely large: reviewable slices, one logical narrative — etiquette and mechanics in `examples/pr-review-playbook.md`.
Trust the settings, not the culture doc — `examples/branch-protection.md` has the full recommended set. The load-bearing ones: required status checks (build + tests + lint, the same gate for everyone including admins), required review (1 for most teams, 2 for money/security paths via CODEOWNERS), **stale-review dismissal** (a re-push invalidates old approvals), and linear history or squash-only merges so `main` reads as a changelog. Conventional commit messages (`conventional-commits`) make that changelog machine-readable.
vanish; revert = one commit. Cost: intra-PR history lost — fine when PRs are small (rule above).
commits (interactive rebase discipline); otherwise you're preserving noise.
release-branch merges where the merge point *is* the information.
pushed shared history**; `revert` forward instead (`references/history-hygiene.md` covers recovery, bisect, and blame-friendly practices).
Monorepo buys atomic cross-cutting changes, one dependency graph, and universal refactors — at the price of tooling (selective CI via path filters/affected-graphs, CODEOWNERS, merge queues at scale). Polyrepo buys independent pace and clear boundaries — at the price of version-matrix coordination (`release-coordination` in `deployment-strategies`) and cross-repo changes becoming N-PR projects. Rule of thumb: one product surface + one deploy train → monorepo; genuinely independent products/teams → polyrepo. The failure mode is the *unmanaged* middle: 40 repos with hand-maintained version matrices and no contract tests.
flags; the branch just batches risk into one giant merge.
integration; fixing it outranks all feature work, and a merge queue prevents most of it.
in settings.
reviewers are human.
release cut.
Run `node scripts/check-branch-hygiene.mjs` inside any repo: it reports stale branches, oversized undelivered work, and non-linear history segments. Then diff your repo settings against `examples/branch-protection.md`. Pairs with `conventional-commits`, `ci-pipeline-design`, `code-review` practices in `deployment-strategies`, and `feature-flags-experimentation`.
🐒 Free agents, skills & packs for Claude Code One subscription. An army of Claude Code agents. 30 production-grade agents, skills, and packs for Claude Code — free, Apache-2.0, install with one command.
Repo: vanara-agents/skills
Implement correct, fast API pagination — cursor vs offset trade-offs, opaque cursor encoding, stable sort keys, page-size limits, total-count costs, and…
Deep reference for caching — what to cache, cache-aside vs read/write-through/write-behind, TTLs with jitter, eviction (LRU/LFU/FIFO), invalidation, and…
Write Conventional Commits — the type(scope)!: subject + body + footer spec — so history is readable and changelogs and SemVer bumps can be derived…
How to write safe, reversible, zero-downtime database schema migrations — additive-first changes, the expand/migrate/contract pattern, batched backfills,…
How to handle errors explicitly and consistently across an app — validate at boundaries, classify operational vs programmer errors, add context while…
A deep prevention reference for the OWASP Top 10 web risks — broken access control, injection, crypto failures, insecure design, SSRF and more — with…