Apache Software Foundation logo

Skill

gh-pull-request

create GitHub pull requests for BanyanDB

Covers GitHub Pull Requests

Description

Create a GitHub pull request for SkyWalking BanyanDB. Use when the user asks to create a PR, submit changes, or open a pull request.

SKILL.md

Creating a Pull Request for SkyWalking BanyanDB

Branch Rules

Always create a PR from a new branch. Never push directly to main. This is the same convention as the main Apache SkyWalking repo (https://github.com/apache/skywalking).

git checkout -b <descriptive-branch-name>

Local Checks Before Creating PR

Run these checks locally before pushing. They mirror the CI check job and PR-blocking tests in .github/workflows/ci.yml.

Required: Code Generation and Build

make generate
make build

Required: Linting and Formatting

make lint
make check

make check verifies formatting (gofumpt), go mod tidy, and ensures no uncommitted generated file diffs.

Why this order: build must succeed before lint so generated code exists. check validates consistency after linting.

After make lint passes: If lint introduced any fixes (e.g. auto-formatting, field alignment corrections), commit those changes before running make check. Do NOT update CHANGES.md for these fixup commits — just stage all modified tracked files and commit with a message like chore: fix lint issues. Then run make check on the clean tree.

Required: License Headers

make license-check

All source files must have Apache 2.0 license headers.

Required: Update CHANGES.md

Add a one-line entry under the current development version section in CHANGES.md (at the repo root). Place it under the appropriate subsection (### Features, ### Bug Fixes, etc.).

Unit Tests

Run these test packages. Each can run in parallel if the user's machine has enough cores, but it's fine to run them sequentially:

make test-ci PKG=./banyand/...
make test-ci PKG=./bydbctl/...
make test-ci PKG=./pkg/...
make test-ci PKG=./fodc/...

The CI uses these options: --vv --fail-fast --label-filter \!slow with coverage flags. For local runs, use a simplified form unless the user asks for full CI parity:

TEST_CI_OPTS="--vv --fail-fast --label-filter \!slow" make test-ci PKG=./banyand/...

Integration Tests

Run these after unit tests pass:

make test-ci PKG=./test/integration/standalone/...
make test-ci PKG=./test/integration/distributed/...

Checks NOT Practical Locally

These run in CI only — no need to run locally:

  • e2e tests — require Docker + OAP stack (90 min timeout)
  • fodc-e2e tests — require Kind Kubernetes cluster
  • dependency-review — GitHub-specific action
  • slow/flaky/property-repair tests — scheduled, not PR-blocking

Common issues

  • make lint fails with field alignment errors: The linter reports structs with suboptimal field ordering (e.g. fieldalignment: struct with X pointer bytes could be Y). Fix them automatically with:
    ~/go/bin/fieldalignment -fix ./path/to/package/...
    

    Parse the lint output to find which packages have alignment issues, run fieldalignment -fix on those packages, then re-run make lint to confirm they're resolved.
  • make lint fails with formatting errors: Run make format to auto-fix, then re-run make lint to confirm.
  • Test timeout: Integration tests can be slow; add TEST_CI_OPTS="--timeout 60m" if they time out
  • Missing tools: make check-req will tell you what's missing
  • make lint or make check fails with buf: not found: Install buf automatically by running make -C api generate, then retry.
  • make build fails: Check if generated files are up to date with make generate

Creating the PR

git push -u origin <branch-name>
gh pr create --title "<title>" --body "<body>"

Follow the standard PR format with a summary and test plan.

© 2026 YourAI.tools. Every skill from an identity-verified publisher.

Independent catalog. Not affiliated with, endorsed by, or sponsored by Anthropic or any listed publisher. All trademarks belong to their respective owners.