
Skill
gh-pull-request
create GitHub pull requests for BanyanDB
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 lintfails 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, runfieldalignment -fixon those packages, then re-runmake lintto confirm they're resolved.make lintfails with formatting errors: Runmake formatto auto-fix, then re-runmake lintto confirm.- Test timeout: Integration tests can be slow; add
TEST_CI_OPTS="--timeout 60m"if they time out - Missing tools:
make check-reqwill tell you what's missing make lintormake checkfails withbuf: not found: Installbufautomatically by runningmake -C api generate, then retry.make buildfails: Check if generated files are up to date withmake 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.
More skills from the skywalking-banyandb repository
View all 4 skillsMore from Apache Software Foundation
View publisherdatafusion-python
write Apache DataFusion Python code
datafusion-python
Jul 12Data AnalysisPythonSQLcayenne-cgen
generate Cayenne entity Java classes
cayenne
Jul 12Data ModelingJavaORMcayenne-db-import
import database schema into Cayenne DataMaps
cayenne
Jul 19DatabaseJavaORMSQLcayenne-full-db-sync
synchronize Cayenne projects with database
cayenne
Jul 19DatabaseJavaORMcayenne-model-naming
clean up Cayenne object-layer names
cayenne
Jul 22Data ModelingDatabaseJavaORMcayenne-modeler
manage Cayenne projects with CayenneModeler
cayenne
Jul 12Data ModelingJavaORM